摘要:翻譯瘋狂的技術宅原文本文首發微信公眾號歡迎關注,每天都給你推送新鮮的前端技術文章隨著使用的不斷增加,異步事件驅動的應用程序變得越來越流行。本文首發微信公眾號歡迎關注,每天都給你推送新鮮的前端技術文章
翻譯:瘋狂的技術宅
原文:http://davidshariff.com/blog/...
本文首發微信公眾號:jingchengyideng
歡迎關注,每天都給你推送新鮮的前端技術文章
隨著 JavaScript 使用的不斷增加,異步事件驅動的應用程序變得越來越流行。 但是,許多開發者經常面臨的一個問題是:在異步環境中進行依賴于結果的操作。
你可能經常會遇到類似的情況:
doA(function(aResult) { // 在b內做一些事情然后開始回調 doB(aResult, function(bResult) { // b完成后,在c中做一些事情并開始回調 doC(bResult, function(cResult) { // 完成后,在這里用doC()的結果做一些事情 }); }); });
由于每個步驟都需要前面的步驟結果,所以經常會看到在回調中嵌套回調函數的模式。 這些嵌套回調最終會難以在較大的異步應用程序中維護、理解和規范。 簡單的異步流程會變得越來越復雜。
在這種情況下使用的解決方案是 Promise/Futures 模型,它表示尚未發生的回調結果。 這個概念非常簡單,它不是在一個函數返回結果之前阻塞并等待其完成,而是在調用對象時立即返回其承諾的將要完成的結果。 這會導致非阻塞行為:
doA() .then(function() { return doB(); }) .then(function() { return doC(); }) .done(function() { /* 在這里做最后要做的事情 */ });
使用 Promise / Future 模型編寫代碼可以享受到使用嵌套回調的大部分優點,同時能夠使代碼更清晰,更結構化,在大多數異步環境下,這些代碼更易于維護,理解和規范。
Promise / Future 并不是最終解決方案,還有很多其他解決方案,這些解決方案也都有各自的優缺點,應該針對不同的情況使用它們。
本文首發微信公眾號:jingchengyideng
歡迎關注,每天都給你推送新鮮的前端技術文章
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/108913.html
摘要:首先,需要來理清一些基礎的計算機編程概念編程哲學與設計模式計算機編程理念源自于對現實抽象的哲學思考,面向對象編程是其一種思維方式,與它并駕齊驅的是另外兩種思路過程式和函數式編程。 JavaScript 中的原型機制一直以來都被眾多開發者(包括本人)低估甚至忽視了,這是因為絕大多數人沒有想要深刻理解這個機制的內涵,以及越來越多的開發者缺乏計算機編程相關的基礎知識。對于這樣的開發者來說 J...
摘要:大潮來襲前端開發能做些什么去年谷歌和火狐針對提出了的標準,顧名思義,即的體驗方式,我們可以戴著頭顯享受沉浸式的網頁,新的標準讓我們可以使用語言來開發。 VR 大潮來襲 --- 前端開發能做些什么 去年谷歌和火狐針對 WebVR 提出了 WebVR API 的標準,顧名思義,WebVR 即 web + VR 的體驗方式,我們可以戴著頭顯享受沉浸式的網頁,新的 API 標準讓我們可以使用 ...
摘要:閱讀小札一閱讀前自大學課上,就開始接觸設計模式,但對設計模式卻鮮有研究與實踐。第二部分是核心部分,由淺到深講解個設計模式。設計模式遵循的原則所有設計模式罪訓的一條原則就是找出程序中變化的地方,并將變化封裝起來。 閱讀小札 · 閱讀前 自大學Java課上,就開始接觸設計模式,但對設計模式卻鮮有研究與實踐。最近向公司反映和游說技術提升,得以獲得公司提供購書機會,借此認真學習前端學習之路的...
閱讀 3133·2021-11-19 09:40
閱讀 2430·2021-10-14 09:42
閱讀 1698·2021-09-22 15:34
閱讀 1441·2019-08-30 15:55
閱讀 775·2019-08-29 12:59
閱讀 412·2019-08-28 18:28
閱讀 1818·2019-08-26 13:42
閱讀 1519·2019-08-26 13:29