在將Chrome升級到58之前,我沒有任何錯誤。Promise意外的行爲,執行順序
進一步說明:我的代碼是工作在週日,我是不知道的執行的異步性質,發現了這兩天後!
new Promise((s, f) => {
console.log(1);
s();
console.log(2);
})
.then(r => {console.log(3)})
console.log(4);
OUTPUT:
1-爲什麼'then'在console.log(2)之後被執行?
可能的答案:因爲承諾結果被人體後,執行返回
2 - 爲什麼「然後」得到的console.log(4)後執行???
承諾不應該是同步的。想象一下,解析器/拒絕器是'setTimeout(function(){...})',你會得到基本相同的行爲。 –
我對我所有的測試瀏覽器(firefox/chrome/edge/opera)都有相同的順序。對於我不知道的第一個問題,但看起來像3是在4之後出現的邏輯,就像在常規的異步調用中一樣,接下來的代碼在回調之前執行。 – Kaddath
@PatrickRoberts對,但我的代碼在週日工作,我沒有意識到執行中的異步本質,今天發現了這個有趣的事情! –