如果你想要学习一门新技术,最好的方式是先了解这门技术是如何诞生的,以及它所解决的问题是什么。了解了这些后,你才能抓住这门技术的本质。所以本文我们就来重点聊聊 JavaScript 引入 Promise 的动机,以及解决问题的几个核心关键点。
Promise是为了解决以下两个问题:
第一是消灭嵌套调用;第二是合并多个任务的错误处理。
Promise 通过回调函数延迟绑定和回调函数返回值穿透的技术,解决了循环嵌套。
function Bromise(executor) {
var onResolve_ = null
var onReject_ = null
//模拟实现resolve和then,暂不支持rejcet
this.then = function (onResolve, onReject) {
onResolve_ = onResolve
};
function resolve(value) {
setTimeout(()=>{
onResolve_(value)
},0)
}
executor(resolve, null);
}