每日一测(一)

Promise

1
2
3
4
5
6
7
8
9
10
11
12
console.log(1);
new Promise(function (resolve, reject) {
reject(true);
window.setTimeout(function () {
resolve(false);
}, 0);
}).then(function () {
console.log(2);
}, function () {
console.log(3)
});
console.log(4);

答案:1 4 3

先执行同步,再执行异步

  1. 打印1
  2. 创建Promise对象,运行reject,是异步进入等待
  3. 打印4
  4. 同步全部完成后进入then,打印3
  5. 最后运行setTimeout(),由于Promise状态已经变成reject,所以resolve不生效