2017-03-07 108 views
0

爲了在別人可以處理這些數據之前轉換某些數據,我必須在函數內部執行一個Fetch promise return。 所以我創造了這個代碼(只是簡單展現的想法):函數承諾執行的順序

function test() { 

    return new Promise(function (resolve, reject) { 
    // Fetch('www.google.com') 
    setTimeout(resolve, 1000); 
    }).then(function() { 
    // convert data, etc 
    console.log(1); 
    }); 
} 
// after conversion, handle it to someone else 
test().then(console.log(2)); 

運行它,我認爲控制檯將顯示:1 2,但不斷出現2 1.有沒有其他辦法可以做到這一點?

+0

您需要傳遞'.then()'a * function *。 'test()。then(function(){console.log(2)});' –

回答

1

就像你與console.log(1)一樣,你需要將它傳遞給then作爲回調之前包裹在一個函數的第二個電話。

test().then(function() { 
    console.log(2); 
}); 

然後,它會顯示12預期。

+0

非常感謝,瘋狂的細節... – MarcosCunhaLima