提问人:gus 提问时间:6/18/2023 最后编辑:gus 更新时间:6/18/2023 访问量:80
在承诺链中,承诺本身是同步创建的还是异步创建的?
In a promise chain, are the promises themselves created synchronously or asynchronously?
问:
我之前在这里问过一个问题,但现在出现了新的疑问,我想证实一下。
在承诺链中,所有承诺是同步创建的,还是作为属于 )// 的 )// 创建的?callbacks
then(
finally()
catch()
let promise1 = Promise.resolve('Stackoverflow');
promise1
.finally(() => {
console.log('finally()');
}) // promise 2
.then((data) => {
console.log('Data: ' + data);
}) // promise 3
.catch((rejection) => {
console.log('rejection: ' + rejection);
}); // promise 4
也就是说,在执行 // 之前创建的 和 promise 是否被执行?promise 2
promise 3
promise 4
then()
finally()
catch()
callbacks
答:
1赞
jabaa
6/18/2023
#1
在承诺链中,方法 和 立即同步调用,回调函数作为参数。要求还立即同步创建承诺。否则,无法调用这些方法。稍后在解析或拒绝 promise 时调用回调函数。then
finally
catch
Promise.resolve('Stackoverflow')
返回一个 promise。
promise1.finally
在 promise 上调用方法并返回 promise(同步)promise1
.then
对上一个 promise 调用方法并返回新 Promise(同步)
.catch
对上一个 promise 调用方法并返回新 Promise(同步)
此方法中的每一个都获取一个回调函数作为参数。稍后,当 promise 被解析或拒绝时,将调用回调函数。
评论
0赞
gus
6/18/2023
".then()
调用一个方法“, ”.catch()
调用一个方法“ - 你这是什么意思?@jabaa
0赞
jabaa
6/18/2023
@gus 始终对对象调用方法。 是指向 的函数的函数调用。promise1.then()
then
this
promise1
0赞
gus
6/18/2023
我明白了,我以为你的意思是不同的。在你发布的“旁白”中,一结束,异步代码就开始了吗?@jabaa
0赞
jabaa
6/18/2023
@gus 异步代码在触发它时启动,例如按钮单击、计时器、网络响应...... 就像一个超时为 0 的计时器。我在事件循环中将一个事件排入队列。Promise.resolve
3赞
jabaa
6/18/2023
@gus 这就是OOP的工作方式。这与承诺无关。 是方法链。 被调用。 在 的返回值上调用,并在 的返回值上调用。a.b().c().d()
b
a
c
a.b()
d
a.b().c()
评论