当我有以下代码时:
var promise1 = Promise.resolve([1, 2, 3]);
promise1.then((value) => {
console.log(value);
// expected output: Array [1, 2, 3]
});
console.log('end of script');
我知道脚本结尾会提前返回,因为 promise
是异步的。但是它在什么时候变成异步的呢?
Promise.resolve()
是异步的吗?
或者 .then
是异步的还是两者兼而有之?
幕后是否还有其他机制在起作用?
(对谷歌来说简直是 hell ,因为我只能得到新的 async await
功能的结果)
最佳答案
Promise.resolve([1, 2, 3]);
Is Promise.resolve() asynchronous?
不,这只是一个常规的函数调用。它将立即返回结果。
Or is .then asynchronous or even both functions
没有。从某种意义上说,两者都不是异步的
promise1.then((value) => console.log(value));
将立即返回一个新的链接 promise 。
然而,Promise 肯定解析 异步,这意味着内部函数 (value => console.log(value)
) 被调用肯定是在你的整个同步代码执行之后。
Is there some other mechanism playing under the hood?
是的,后台有一个“神奇的”事件循环,用于管理所有异步事件。
关于javascript - Promise.resolve 是异步函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48733021/