Promise 中定义的回调的执行顺序
时间:2022-12-24阅读:39来源:柠檬博客作者:柠檬博客
如果你定义一个 Promise,async/await 会从上到下执行代码,所以不难。
我做了一些研究,所以这里是一个总结。
样本让我们创建 Promise a 和 b 并在每个函数中输出一个日志。它还在每个定义之间以及 Promise.alling a 和 b 之后记录。
const a = new Promise((resolve, reject) => { console.log('a'); resolve('a: resolve'); }) .then(() => { console.log('a: then'); }); console.log('aの後') const b = new Promise((resolve, reject) => { console.log('b'); resolve('b: resolve'); }) .then(() => { console.log('b: then'); }); console.log('bの後') Promise.all([a, b]) .then(() => { console.log('c: then'); }); console.log('d');
结果是:
[LOG]: "a" [LOG]: "aの後" [LOG]: "b" [LOG]: "bの後" [LOG]: "d" [LOG]: "a: then" [LOG]: "b: then" [LOG]: "c: then"
嗯,then中的输出显示在定义后的d之后。
这怎么发生的我想习惯写作的人仔细观察就会知道这种行为,但它是一种什么样的规范呢?
当我阅读这些页面时,它的定义如下。
保证与传统的回调传递不同,Promise 保证以下内容:
在当前 JavaScript 事件循环的当前处理完成之前,绝不会调用 then() 添加的回调。在示例中所写的情况下,似乎在输出 d 的部分完成后才处理所有内容。我希望能够根据情况分别编写 async/await 和 then/catch,而不是仅仅以不同的方式编写它们。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308626424.html
39人参与,
0条评论
登录后显示评论回复