文章目录
1.Promise 构造函数是同步执行的,then方法是异步执行的
var p = new Promise((resolve, reject) => {
console.log(1)
resolve(3)
console.log(2)
})
p.then(res => {
console.log(res)
})
console.log(4)
//输出结果:1 2 4 3
new 一个Promise示例后,立即执行executor函数,它是同步的,
一直遇到resolve
函数,把它作为微任务添加到任务队列中,
当执行栈中的所有同步任务都执行完毕时,系统就会读取任务队列中的事件,异步任务(微任务resolve)开始执行
2.Promise 状态一旦改变则不能再变
var p = new Promise((resolve, reject) => {
resolve('success1')
reject('error')
resolve('success2')
});
p.then((res) => {
console.log('then: ', res)
});
p.catch((err) => {
console.log('catch: ', err)
});
// 运行结果:then: success1
构造函数中的 resolve 或 reject 只有第一次执行有效,多次调用没有任何作用
3.then和catch方法可以被多次调用
var p = new Promise((resolve, reject) => {
setTimeout(() => {
console.log('once')
resolve('success')
}, 1000);
});
const start = Date.now(