Promise 构造函数是同步执行还是异步执行,那么 then 方法呢?
在 JavaScript 中, Promise
构造函数和 then
方法有不同的执行方式:
1. Promise
构造函数
- 同步执行 : 当你创建一个
Promise
实例时,构造函数的执行是同步的。传递给Promise
构造函数的执行器函数(executor function)会立即被调用。例如:
new Promise((resolve, reject) => {
console.log("构造函数执行");
resolve("完成");
});
console.log("构造函数外部代码");
输出会是:
构造函数执行
构造函数外部代码
在这个例子中, console.log("构造函数执行")
会在 console.log("构造函数外部代码")
之前执行。
2. then
方法
- 异步执行 :
then
方法的回调函数是异步执行的。尽管then
方法的调用是同步的,但传入then
的回调函数会在当前执行栈清空后,才会被执行。这是因为then
回调会被加入到微任务队列(microtask queue),而微任务会在宏任务(如setTimeout
)之前执行。
new Promise((resolve, reject) => {
resolve("完成");
}).then((result) => {
console.log("then 回调");
});
console.log("then 外部代码");
输出会是:
then 外部代码
then 回调
在这个例子中, console.log("then 回调")
会在 console.log("then 外部代码")
之后执行。
总结
Promise
构造函数的执行是同步的。then
方法的回调函数是异步执行的,尽管then
方法本身的调用是同步的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: JS 异步解决方案的发展历程以及优缺点
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论