一直以來覺得非同步操作在我心頭像一團迷霧,可是它重要到我們非學不可,那就把它的面紗解開吧。
es6 誕生以前,非同步程式設計的方法,大概有下面四種。
非同步:簡單的說:執行順序不是一次連續完成的,中間加入了其他的程式運算,等第一階段準備好了資料,再返回來進行計算。
來看看阮一峰老師es6入門中講的的
反覆讀幾遍,真的就完全了解了什麼是非同步。
promise是非同步程式設計的解決方案,所謂promise,簡單說就是乙個容器,裡面儲存著未來會結束事件的結果(也就是非同步操作的結果),promise是乙個物件,從它可以獲取非同步操作的資訊。
基於上面讀取檔案和處理檔案的例子而已,promise充當的角色就是,「再接著執行任務的第二段(處理檔案)」,處理檔案就可以看出乙個大的盒子,promise要做到事情就是操作資訊,儲存執行的結果。
特點有三種狀態panding(進行中),fulfilled(已成功)和rejected
(已失敗),狀態不受外界影響
一旦改變狀態就不會在變(resolved(定型))
panding >>>fulfilled
panding>>>rejected
優點有了promise
物件,就可以將非同步操作以同步操作的流程表達出來,避免了層層巢狀的**函式
缺點無法中途取消
不設定**函式,promise內部丟擲錯誤,不會影響外部
當處於pending無法知道進展到哪一
基本用法
分享一段實際開發中的**,在結合理論知識,估計你就知道了基本用法,和內建方法是如何使用了。
ES6優雅的非同步操作Promise
doctype html html lang en head meta charset utf 8 title title title head body script 1.使用settimeout settimeout 1000 2.promise的使用 promise的引數 函式 resolve...
ES6學習之Promise物件
promise 是非同步程式設計的一種解決方案,比傳統的解決方案 函式和事件 更合理和更強大。原生提供了promise 物件。promise 簡單說就是乙個容器,裡面儲存著之後才執行的事件。從語法層面來說,promise 是乙個物件,從它可以獲取非同步操作的訊息。promise 提供統一的 api,...
ES6之Promise學習與實踐
1.前言 在平時的業務開發中,前端通常需要請求後台獲取資料,或者nodejs讀取檔案等等一系列的非同步操作,我們通常需要利用非同步操作的結果或者對非同步操作的結果進行處理。通常我們的解決方案是 在非同步操作成功或者失敗的 函式裡面寫方法,在非同步操作比較簡單的時候這樣寫 還是比較好理解的,當業務逐漸...