摘要:先把的回調(diào)先到數(shù)組,然后在調(diào)用該回調(diào)鏈?zhǔn)秸{(diào)用,一個(gè)簡(jiǎn)單是實(shí)現(xiàn)原理,方法中使用,為的是鏈?zhǔn)秸{(diào)用,首次遍歷數(shù)組時(shí),下標(biāo)為,傳入到首次的返回結(jié)果。如果有錯(cuò)請(qǐng)各位多多指點(diǎn),勿噴,
let P = class {
constructor(callback) { this.resolveSet = []; this.rejectSet = []; setTimeout(() => { **// 先把then的回調(diào)先push到數(shù)組 ,然后在調(diào)用該回調(diào)** callback(this.resolve.bind(this), this.reject.bind(this)) }, 0); } resolve(result) { this.resolveSet.reduce((before, current,i) => { // 鏈?zhǔn)秸{(diào)用 if(i ===1){ return current(before(result)) }else{ return current(before) } }) } reject(err) {} then(callback) { this.resolveSet.push(callback); return this } catch (callback) {} } new P((resolve, reject) => { return resolve({ result: "resolve" }) }).then(data => { return { result: 1 } }).then((x) => { return {result:2} }).then(x=>{ debugger }),
一個(gè)簡(jiǎn)單是實(shí)現(xiàn)原理,resolve方法中使用reduce,為的是鏈?zhǔn)秸{(diào)用,首次遍歷callback數(shù)組時(shí),下標(biāo)為 1,傳入到首次的返回結(jié)果。
如果有錯(cuò)請(qǐng)各位多多指點(diǎn),勿噴,
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/101247.html
摘要:追加在本輪循環(huán)的異步任務(wù)追加在次輪循環(huán)的異步任務(wù)規(guī)定,和的回調(diào)函數(shù),追加在本輪循環(huán),即同步任務(wù)一旦執(zhí)行完成,就開(kāi)始執(zhí)行它們。 author: 陳家賓 email: [email protected] date: 2018/2/23 Promise 基本實(shí)現(xiàn) var PENDING = 0; var FULFILLED = 1; var REJECTED = 2; function Pr...
摘要:解析原理,實(shí)現(xiàn)一個(gè)概述這篇文章旨在解析的異步實(shí)現(xiàn)原理,并且以中的為藍(lán)本實(shí)現(xiàn)一個(gè)簡(jiǎn)單的。具體的規(guī)范可以參見(jiàn)細(xì)節(jié)構(gòu)造器中必須傳入函數(shù),否則會(huì)拋出錯(cuò)誤。中的回調(diào)返回值會(huì)影響返回的對(duì)象。執(zhí)行器傳入構(gòu)造器的為函數(shù),并且在構(gòu)造時(shí)就會(huì)執(zhí)行。 解析 Promise 原理,實(shí)現(xiàn)一個(gè)Promise 概述 這篇文章旨在解析 Promise的異步實(shí)現(xiàn)原理,并且以 ES6中的 Promise 為藍(lán)本實(shí)現(xiàn)一個(gè)簡(jiǎn)單...
摘要:不兼容問(wèn)題,本文不予以處理,出門(mén)左轉(zhuǎn),找谷哥。如果中的回調(diào)函數(shù)拋出一個(gè)錯(cuò)誤,那么返回的將會(huì)成為拒絕狀態(tài),并且將拋出的錯(cuò)誤作為拒絕狀態(tài)的回調(diào)函數(shù)的參數(shù)值。 Promise與async 主要內(nèi)容: promise基本實(shí)現(xiàn)原理 promise 使用中難點(diǎn)(鏈?zhǔn)秸{(diào)用,API基本上返回都是一個(gè)新Promise,及參數(shù)傳遞) promise 對(duì)異常處理 參考: ? 30分鐘,讓你徹底明...
摘要:從最開(kāi)始的到封裝后的都在試圖解決異步編程過(guò)程中的問(wèn)題。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。寫(xiě)一個(gè)符合規(guī)范并可配合使用的寫(xiě)一個(gè)符合規(guī)范并可配合使用的理解的工作原理采用回調(diào)函數(shù)來(lái)處理異步編程。 JavaScript怎么使用循環(huán)代替(異步)遞歸 問(wèn)題描述 在開(kāi)發(fā)過(guò)程中,遇到一個(gè)需求:在系統(tǒng)初始化時(shí)通過(guò)http獲取一個(gè)第三方服務(wù)器端的列表,第三方服務(wù)器提供了一個(gè)接口,可通過(guò)...
摘要:的翻譯文檔由的維護(hù)很多人說(shuō),阮老師已經(jīng)有一本關(guān)于的書(shū)了入門(mén),覺(jué)得看看這本書(shū)就足夠了。前端的異步解決方案之和異步編程模式在前端開(kāi)發(fā)過(guò)程中,顯得越來(lái)越重要。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。 JavaScript Promise 迷你書(shū)(中文版) 超詳細(xì)介紹promise的gitbook,看完再不會(huì)promise...... 本書(shū)的目的是以目前還在制定中的ECMASc...
閱讀 727·2021-11-22 13:52
閱讀 1537·2021-09-27 13:36
閱讀 2840·2021-09-24 09:47
閱讀 2199·2021-09-22 15:48
閱讀 3612·2021-09-22 15:39
閱讀 1478·2019-08-30 12:43
閱讀 2930·2019-08-29 18:39
閱讀 3201·2019-08-29 12:51