Promise.resolve()
不是一个异步函数,但它可以用于异步操作。Promise.resolve(value)
方法会返回一个以给定值解析后的 Promise 对象。如果该值是一个 promise,那么这个新的 promise 会采用其状态;如果该值是 thenable(即具有 "then" 方法),返回的 promise 会“追踪”这个 thenable,采用它的终态;否则返回的 promise 将以此值完成。
此方法本身是同步的,它立即返回一个 promise 对象。然而,Promise 构造的设计是为了处理异步操作,即使 Promise.resolve()
是同步的,它处理回调函数的方式也是异步的。例如:
javascriptconsole.log('1'); Promise.resolve().then(() => { console.log('2'); }); console.log('3');
在上面的代码中,输出的顺序将会是:
shell1 3 2
这里,虽然 Promise.resolve()
是在第一个 console.log('1')
后立即调用的,但 .then()
里面的回调函数是放在 JavaScript 任务队列中的,只有当同步代码执行完毕后,即 console.log('3')
执行后,才会执行回调。
2024年6月29日 12:07 回复