在将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对,但我的代码在周日工作,我没有意识到执行中的异步本质,今天发现了这个有趣的事情! –