Promise的實現
class Promise111{ constructor(){ this.callbacks = [] this.oncatch = null } then(onSuccess, onFail){ this.callbacks.push({ resolve: onSuccess, reject: onFail }) return this } resolve(result){ this.complete("resolve", result) } reject(result){ this.complete("reject", result) } complete(type, result){ if(type === "reject" && this.oncatch){ this.callbacks = [] this.oncatch(result) } else { let callbackObj = this.callbacks.shift() callbackObj[type](result) } } catch(onFail){ this.oncatch = onFail return this } }
測試
var p = new Promise111() function fn(){ setTimeout(function(){ p.resolve("data1") }, 1000) return p } function fn1(result){ console.log("fn1", result) setTimeout(function(){ p.resolve("data2") }, 2000) } function fn2(result){ console.log("fn2", result) } fn().then(fn1).then(fn2)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83687.html
摘要:要構建自適應實例,先要有自適應的實現類,實現類有兩種方式一種通過配置文件,一種是通過是字節碼的方式動態生成。 SPI機制 SPI,即(service provider interface)機制,有很多組件的實現,如日志、數據庫訪問等都是采用這樣的方式,一般通用組件為了提升可擴展性,基于接口編程,將操作接口形成標準規范,但是可以開放多種擴展實現,這種做法也符合開閉設計原則,使組件具有可插...
摘要:如何實現前端路由要實現前端路由,需要解決兩個核心如何改變卻不引起頁面刷新如何檢測變化了下面分別使用和兩種實現方式回答上面的兩個核心問題。 原文鏈接:github.com/whinc/blog/… 在單頁應用如此流行的今天,曾經令人驚嘆的前端路由已經成為各大框架的基礎標配,每個框架都提供了強大的路由功能,導致路由實現變的復雜。想要搞懂路由內部實現還是有些困難的,但是如果只想了解路由實現基本...
閱讀 2892·2021-11-23 09:51
閱讀 3403·2021-11-22 09:34
閱讀 3304·2021-10-27 14:14
閱讀 1503·2019-08-30 15:55
閱讀 3344·2019-08-30 15:54
閱讀 1066·2019-08-30 15:52
閱讀 1887·2019-08-30 12:46
閱讀 2844·2019-08-29 16:11