手写实现Promise思路

手写实现Promise思路

改变一下思路 抄一下作业

每次then方法中把回调函数推入一个数组,真正执行是在resolve方法中执行数组里的方法

function MyPromise(fn){
var that = this
var value =‘hhh’
var callbacks = []
var resolve = function (){
if(callbacks.length) callbacks0
}
this.then = function(fn2){
callbacks.push(fn2)
}
fn(resolve)
}
function Promise(fn){
//需要成功以及成功时的回调
var doneList = [];
var value =‘hhh’
//一个实例的方法,用来注册异步事件
this.then = function(done ,fail){
doneList.push(done);
return this;
}
function resolve(v){
setTimeout(function(){
value = v
doneList.forEach(function(fulfill){
fulfill(value);
});
},0)
}
fn(resolve);
}
function fn(resolve){
resolve(“success 1”)
}
function fn2(resolve){
resolve(“success 2”)
}
new Promise(fn2).then(function(val) {
console.log(‘callback------’,val)
})

resolve里的回调函数调用需要是异步的,这可以保证数组中已经注册好了所有的回调函数,再执行

所以说 所有的回调函数 也就是写在then里面的参数 是先注册 再调用的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值