* promise可以有三種狀態,分別是pedding 、fulfilled、 rejected
*pending promise物件例項建立時候的初始狀態
*fulfilled 可以理解為成功的狀態
*rejected可以理解為失敗的狀態
*構造乙個promise例項需要給promise建構函式傳入乙個函式。傳入的函式需要有兩個形參,兩個形參都是function型別的引數。分別是resolve和reject
* promise上還有then方法,then 方法就是用來指定promise 物件的狀態改變時確定執行的操作,resolve 時執行第乙個函式(onfulfilled),reject時執行第二個函式(onrejected)
*當狀態變為resolve時便不能再變為reject,反之同理
function promise(executor){ //executor執行器
let self = this;
self.status = 'pending'; //等待態
self.value = undefined; // 表示當前成功的值
self.reason = undefined; // 表示是失敗的值
function resolve(value){ // 成功的方法
if(self.status === 'pending'){
self.status = 'resolved';
self.value = value;
function reject(reason){ //失敗的方法
if(self.status === 'pending'){
self.status = 'rejected';
self.reason = reason;
executor(resolve,reject);
promise.prototype.then = function(onfufiled,onrejected){
let self = this;
if(self.status === 'resolved'){
onfufiled(self.value);
if(self.status === 'rejected'){
onrejected(self.reason);
= promise;
簡單實現Promise原理
const pending pending const resolved resolved const rejected rejected 對於不太經常更改的變數 定於為常量 function mypromise fn function reject value trycatch e mypromi...
Promise原理 簡單實現
參考 個人認為原博的實現有點問題 在next函式的實現上,會導致無限的呼叫 看看一般promise的用法 promise new promise function resolve,reject then function val functioin err then function val fun...
Promise原理與實現
var promise function if this instanceof promise return new promise resolver var self this 儲存this self.callbacks 儲存onresolve和onreject函式集合 self.status p...