// 构造
let p = new Promise((resolve, reject) => {
// ...
})
// 使用
p.then(() => {
// ..
}).catch(err => {
// ..
})
一些思考
1、resolve()、reject()时需不需要加上return?
let p = new Promise((resolve, reject) => {
if(...) {
return resolve()
} else {
return reject()
}
})
一般来说,是 推荐 在resolve()
、reject()
后加上 return
的;
虽然 return
对 Promise
在被 resolve
或者 reject
处理后的状态没有影响,但是,它可以可以避免执行后续不必要的代码,这是一个 比较好的编程习惯 。
2、Promise 与 setTimeout/setInteral 的执行顺序
setTimeout(() => {
console.log('timeout')
}, 0)
Promsie.resolve(42).then(() => {
console.log('promise')
})
// promise
// timeout
Promise 会先执行;Promise
属于 微任务,setTiemout
属于 宏任务,微任务 执行优先级高于 宏任务。