乐闻世界logo
搜索文章和话题

Is Promise.resolve a asynchronous function?

7 个月前提问
5 个月前修改
浏览次数24

1个答案

1

Promise.resolve() 不是一个异步函数,但它可以用于异步操作。Promise.resolve(value) 方法会返回一个以给定值解析后的 Promise 对象。如果该值是一个 promise,那么这个新的 promise 会采用其状态;如果该值是 thenable(即具有 "then" 方法),返回的 promise 会“追踪”这个 thenable,采用它的终态;否则返回的 promise 将以此值完成。

此方法本身是同步的,它立即返回一个 promise 对象。然而,Promise 构造的设计是为了处理异步操作,即使 Promise.resolve() 是同步的,它处理回调函数的方式也是异步的。例如:

javascript
console.log('1'); Promise.resolve().then(() => { console.log('2'); }); console.log('3');

在上面的代码中,输出的顺序将会是:

shell
1 3 2

这里,虽然 Promise.resolve() 是在第一个 console.log('1') 后立即调用的,但 .then() 里面的回调函数是放在 JavaScript 任务队列中的,只有当同步代码执行完毕后,即 console.log('3') 执行后,才会执行回调。

2024年6月29日 12:07 回复

你的答案