前言
如果没有自己尝试去实现一个 Promise
,估计很难知道 Promise
里的一些细节,面试官问一些比较刁的问题,也答不出来。比如:
一,trycatch
可以捕获到 Promise
里的错误吗?
try {
new Promise((resolve, reject) => {
throw 'err'
})
} catch (error) {
console.log(error)
}
答案是不行。Promise
的执行器里,已经对错误做了 trycatch
处理。
二,then
的回调函数属于微任务
console.log(1)
new Promise((resolve, reject) => {
resolve(2)
}).then(_ => { console.log(_) })
console.log(3)
以上的输出顺序是不是 1 2 3 ?实现过 Promise 就会知道要做到顺序执行也是可以的(仅仅是这种情况),但是实际上 then 的是一个异步的微任务。
继续阅读“如何手写一个 Promise polyfill”