实现一个简单得promise
/**
* @resolveCallbackAall 存放所有成功回调
* @rejectCallbackAall 存放所有失败回调
*/
let promise = function (promiseCallback) {
let resolveCallbackAall = [];
let rejectCallbackAall = [];
this.then = (res) => {
resolveCallbackAall.push(res);
return this; // 这里只是为了可以链式写法 应该返回一个新的 promise
};
this.catch = function (err) {
rejectCallbackAall.push(err);
return this; // 这里只是为了可以链式写法 应该返回一个新的 promise
};
resolve = (data) => {
setTimeout(() => {
resolveCallbackAall.forEach(resolveCallback => {
resolveCallback(data);
})
}, 0)
}
reject = (data) => {
setTimeout(() => {
rejectCallbackAall.forEach(rejectCallback => {
rejectCallback(data);
})
}, 0)
}
promiseCallback(resolve, reject)
};
function myfun(number) {
return new promise((resolve, reject) => {
if (number > 10) {
resolve(number);
} else {
reject(number);
}
})
}
myfun(5).then(res => {
console.log(res)
}).catch(error => {
console.log(error)
})