Promise、Promise.all和Promise.race实现
生活随笔
收集整理的這篇文章主要介紹了
Promise、Promise.all和Promise.race实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Pomise
function myPromise(constructor) {let self = this;self.status = "pending" // 定義狀態改變前的初始狀態self.value = undefined; // 定義狀態為resolved的時候的狀態self.reason = undefined; // 定義狀態為rejected的時候的狀態function resolve(value) {if(self.status === "pending") {self.value = value;self.status = "resolved";}}function reject(reason) {if(self.status === "pending") {self.reason = reason;self.status = "rejected";}}try {constructor(resolve,reject);} catch(e) {reject(e);} }myPromise.prototype.then = function(onFullfilled,onRejected) {let self = this;switch(self.status) {case "resolved":onFullfilled(self.value);break;case "rejected":onRejected(self.reason);break;default: } }Promise.all
Promise.prototype.all = function(promises) {let results = [];let promiseCount = 0;let promisesLength = promises.length;return new Promise(function(resolve, reject) {for (let val of promises) {Promise.resolve(val).then(function(res) {promiseCount++;// results.push(res);results[i] = res;if (promiseCount === promisesLength) {return resolve(results);}}, function(err) {return reject(err);});}}); };Pomise.race
Promise.race = function(promises) {return new Promise(function(resolve, reject) {for (let i = 0; i < promises.length; i++) {Promise.resolve(promises[i]).then(function(value) {return resolve(value)}, function(reason) {return reject(reason)})}})}總結
以上是生活随笔為你收集整理的Promise、Promise.all和Promise.race实现的全部內容,希望文章能夠幫你解決所遇到的問題。