promise是什么?
promise是一個解決回調地獄的函數,是一個強大的異步回調方案。es6將其弄可以直接使用!
我們知道promise中共有三種狀態
pending 過渡態
fulfilled 完成態
rejected 失敗態
function Promise(exector) { let self = this; //status表示一種狀態 let status = "pending"; let value = undefined; let reason = undefined; //成功執行 function resolve(value) { if (status == 'pending') { self.value = value; self.status = "resolve"; } } //執行失敗 function reject(reason) { if (status == 'pending') { self.reason = reason; self.status = "reject" } } //對異常操作 try { exector(resolve, reject) } catch (e) { reject(e) } //設置promise的then方法 Promise.prototype.then = function(reject, resolve) { let self = this; if (this.status == 'resolve') { reject(self.value) } if (this.status == 'reject') { resolve(self.reason) } } } //new 一個promise 進行測試 let promise = new Promise((reject, resolve) => { resolve("return resolve"); }); promise.then(data => { console.log(`success${data}`); }, err => { console.log(`err${err}`); })
簡單 的 promise就實現了