// 构造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 属于 宏任务,微任务 执行优先级高于 宏任务。
