function MyPromise(resolve , reject) {
var okBacks = [], //成功回调函数
errBacks = [], //失败函数回调
state = 0; // 0= 初始化 , 1=成功,,2=失败
//判断接口回调成功,判断函数,并执行
function ok(value) {
if(value && state === 0){
state = 1;
setTimeout(()=>{
okBacks.forEach(callback=>{
callback(value);
})
},0)
}
}
//判断接口回调失败,判断函数,并执行
function fail(value) {
if(!value && state === 0){
state = 2;
setTimeout(()=>{
errBacks.forEach(callback=>{
callback(value);
})
},0)
}
}
this.then = function(okBack){
okBacks.push(okBack);
return this;
};
this.catch = function(errBack){
errBacks.push(errBack);
return this;
};
resolve(ok);
reject(fail);
// return this;
}
function getUserList() {
var httpRes = false; //模仿是一个http请求
return new MyPromise(resolve => {
setTimeout(()=>resolve(httpRes),500);
}, reject => {
setTimeout(()=>reject(httpRes),600);
});
}
getUserList().catch(err => {
console.log('err', err)
}).then(res => {
console.log('res' , res);
})
个人理解promise.then.catch原理
最新推荐文章于 2024-04-04 13:38:01 发布