實現一個簡單得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)
})