赞
踩
Promise 是使用回调函数,是把回调封装在了内部,使用上一直通过 then方法的链式调用,使得多层的回调嵌套看起来变成了同一层的,书写上以及理解上会更直观和简洁一些。
const PENDING = 'pending'; //初始状态 const FULFILLED = 'fulfilled'; // 成功状态 const REJECTED = 'rejected'; // 成功 function Promise(extutor){ let self = this; self.status = PENDING; // 设置状态 // 存放成功回调的数组 self.onResolveCallbacks = []; // 存放失败回调的数组 self.onRejectedCallbacks = []; function resolve(value){ if(self.status === PENDING){ self.status = FULFILLED; self.value = value; self.onResolveCallbacks.forEach(cb => cd(self.value)) } } function reject(reason){ if(self.status === PENDING){ self.status = REJECTED; self.value = reason; self.onRejectCallbacks.forEach(cb => cd(self.value)) } } try{ excutor(resolve, reject) } catch(e) { reject(e) } }
在现实中咱们经常会使用以下代码
const p = new Promise(function(resolve, reject){
if(/*异步操作的成功*/){
resolve(value)
} else {
reject(error)
}
});
p.then(function(){
}).catch(function(e){
// 失败的操作
})
更多文章请参考 阮一峰《ES6 标准入门》(第二版)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。