const promise = new Promise((resolve, reject) => {
console.log(1)
resolve()
console.log(2)
})promise.then(() => {
console.log(3)
})console.log(4)
执行结果是:1243
promise构造函数是同步执行的,then方法本身是同步执行,then方法中的内容加入微任务异步执行
【javascript|[JavaScript][异步]Promise 构造函数是同步执行还是异步执行,那么 then 方法呢()】对上面的例子的扩展:
const promise = new Promise((resolve, reject) => {
console.log(1);
resolve(5);
console.log(2);
}).then(val => {
console.log(val);
});
promise.then(() => {
console.log(3);
});
console.log(4);
setTimeout(function() {
console.log(6);
});
执行结果: 124536
microtask queue里面先添加的
promise.resolve(5).then((val)=>{console.log(val)})
,后添加的promise.then(() => {console.log(3);
});
推荐阅读
- JavaScript|promise的构造函数是异步执行还是同步执行()
- JavaScript数组常用方法解析和深层次js数组扁平化
- Vue|Vue初学——插槽,具名插槽,作用域插槽
- web|JavaScript扁平数组结构转换成JSON树形结构、无限极、forEach、push、children
- Vue.js|Vue3 slot插槽——(默认插槽、具名插槽、作用域插槽)
- ES6|ES9 新特性 ------ 扩展运算符
- JavaScript|JavaScript —— 生成随机数
- js计算一段时间内工作日天数,考虑节假日和调休日
- JavaScript原型链,范围链和性能(你需要知道的)