async
表示函式裡有非同步操作,await
表示緊跟在後面的表示式需要等待結果。
async
函式對 generator 函式的改進,體現在以下四點。
(1)內建執行器。
generator 函式的執行必須靠執行器,所以才有了co
模組,而async
函式自帶執行器。也就是說,async
函式的執行,與普通函式一模一樣,只要一行。
var result =
asyncreadfile(
);
上面的**呼叫了asyncreadfile
函式,然後它就會自動執行,輸出最後結果。這完全不像 generator 函式,需要呼叫next
方法,或者用co
模組,才能真正執行,得到最後結果。
(2)更好的語義。
async
和await
,比起星號和yield
,語義更清楚了。async
表示函式裡有非同步操作,await
表示緊跟在後面的表示式需要等待結果。
(3)更廣的適用性。
co
模組約定,yield
命令後面只能是 thunk 函式或 promise 物件,而async
函式的await
命令後面,可以是promise 物件和原始型別的值(數值、字串和布林值,但這時等同於同步操作)。
(4)返回值是 promise。
async
函式的返回值是 promise 物件,這比 generator 函式的返回值是 iterator 物件方便多了。你可以用then
方法指定下一步的操作。進一步說,async
函式完全可以看作多個非同步操作,包裝成的乙個 promise 物件,而await
命令就是內部then
命令的語法糖。
引用文章:
ES2017中的修飾器Decorator
修飾器 decorator 是乙個函式,用來修改類的行為。本文將詳細介紹es2017中的修飾器decorator es2017 引入了這項功能,目前 babel 轉碼器已經支援decorator 首先,安裝babel core和babel plugin transform decorators。由於...
es5標準模式
trycatch e 防止我們報錯的 trycatch e document.write 黃山 這行繼續執行 error.name的六種值對應的資訊 10 39 17 58 1.evaierror eval 使用與定義不一致 2.rangeerror 數值越界 3.referenceerror 非法...
ES6引入iterable型別
遍歷array可以採用下標迴圈,遍歷map和set就無法使用下標。為了統一集合型別,es6標準引入了新的iterable型別,array map和set都屬於iterable型別。具有iterable型別的集合可以通過新的for of迴圈來遍歷。for of迴圈是es6引入的新的語法,請測試你的瀏覽...