ES6學習筆記(四) 非同步操作

2022-07-04 07:18:13 字數 1224 閱讀 7047

pending、resolved、rejected

var promis = new promise(function(resolve,reject),

error:(err)=>

})})promis.then(function(res)).catch(function(err));

鏈式呼叫,狀態變為resolve

如果把下一步想要的東西return出去,即可讓下乙個then使用

var promise = new promise(function(resolve,reject),

error:(err)=>

})})promise.then(function(res)).then(function(data)).then(function(result));

上面的**還可以借用箭頭函式簡寫成,極大提公升了**的簡潔性和可讀性

promise.then(res => res.data)

.then(data => data.result)

.then(result => console.log(result));

如果非同步操作丟擲錯誤,狀態就會變為rejected,就會呼叫catch方法指定的**函式,處理這個錯誤。

另外,then方法指定的**函式,如果執行中丟擲錯誤,也會被catch方法捕獲。

如果promise狀態已經變成resolved,再丟擲錯誤是無效的。

catch方法返回的還是乙個promise物件,因此後面還可以接著呼叫then方法。

多個promise例項,包裝成1個,有點類似array.prototype.every()

用法:

var p = promise.all([p1, p2, p3]);
只有p1、p2、p3的狀態都變成fulfilled,p的狀態才會變成fulfilled,此時p1、p2、p3的返回值組成乙個陣列,傳遞給p的**函式。

只要p1、p2、p3之中有乙個被rejected,p的狀態就變成rejected,此時第乙個被reject的例項的返回值,會傳遞給p的**函式。

多個promise例項,包裝成1個,有點類似array.prototype.some()

p1、p2、p3其中乙個狀態變成fulfilled,p的狀態就會變成fulfilled

那個率先改變的promise例項的返回值,就傳遞給p的**函式。

ES6非同步操作之Promise

一直以來覺得非同步操作在我心頭像一團迷霧,可是它重要到我們非學不可,那就把它的面紗解開吧。es6 誕生以前,非同步程式設計的方法,大概有下面四種。非同步 簡單的說 執行順序不是一次連續完成的,中間加入了其他的程式運算,等第一階段準備好了資料,再返回來進行計算。來看看阮一峰老師es6入門中講的的 反覆...

ES6學習筆記

let 塊變數 作用域為塊 const 常亮 作用域為當前塊 解構賦值 例 var x,y 1,2 字元擴充套件 at includes startswith endswith repeat codepointat 模板字串 例 正則的uiy 數值擴充套件 number.isfinite numbe...

ES6學習筆記

常用語法 1 let 與var類似,不同的是let定義的變數有塊級作用域,比如 var a 1 while true alert a 2 用let let a 1 while true alert a 12 const用來定義變數,但是定義之後的值不能再次更改了。乙個實際的用途是用來定義引入的模組,...