筆記總結(jié)

一、ES8(async/await)異步函數(shù)

ES8: async await 注意:async必須要去修飾一個函數(shù),await必須要寫在由async修飾的函數(shù)里面

await一定要去修飾一個返回Promise對象的函數(shù)前面



讀取文件


盒子的異步動畫

二、ES6數(shù)組方法

indexOf數(shù)組查找元素


lastIndexOf方法類似indexOf,只是順序相反

forEach遍歷數(shù)組


forEach除了接受一個必須的回調(diào)函數(shù)參數(shù),還可以接受一個可選的上下文參數(shù)(改變回調(diào)函數(shù)里面的this指向)(第2個參數(shù))如果這第2個可選參數(shù)不指定,則使用全局對象代替(在瀏覽器是為window),嚴(yán)格模式下甚至是undefined

map映射(一一對應(yīng))。[].map();基本用法跟forEach方法類似:


filter過濾篩選(callback在這里擔(dān)任的是過濾器的角色,當(dāng)元素符合條件,過濾器就返回true,而filter則會返回所有符合過濾條件的元素)。


reduce(從左到右累加)

對數(shù)組中的所有元素調(diào)用指定的回調(diào)函數(shù)。該回調(diào)函數(shù)的返回值為累積結(jié)果,并且此返回值在下一次調(diào)用該回調(diào)函數(shù)時作為參數(shù)提供


reduceRight(從右到左累加),reduce的作用完全相同,唯一的不同是,reduceRight是從右至左遍歷數(shù)組的元素。

三、ES6--Promise

所謂Promise,就是一個對象,用來傳遞異步操作的消息。

Promise對象有以下兩個特點:

對象的狀態(tài)不受外界影響。Promise對象代表一個異步操作,有三種狀態(tài):Pending(進(jìn)行中)、

Resolved(已完成,又稱Fulfilled)和Rejected(已失敗)。只有異步操作的結(jié)果,可以決定當(dāng)前是哪一種

狀態(tài),任何其他操作都無法改變這個狀態(tài)。

一旦狀態(tài)改變,就不會再變,任何時候都可以得到這個結(jié)果。Promise對象的狀態(tài)改變,只有兩種可能:從

Pending變?yōu)镽esolved和從Pending變?yōu)镽ejected。只要這兩種情況發(fā)生,狀態(tài)就凝固了,不會再變了,會

一直保持這個結(jié)果。就算改變已經(jīng)發(fā)生了,你再對Promise對象添加回調(diào)函數(shù),也會立即得到這個結(jié)果。這

與事件(Event)完全不同,事件的特點是,如果你錯過了它,再去監(jiān)聽,是得不到結(jié)果的。

有了Promise對象,就可以將異步操作以同步操作的流程表達(dá)出來,避免了層層嵌套的回調(diào)函數(shù)。此外,

Promise對象提供統(tǒng)一的接口,使得控制異步操作更加容易。

Promise也有一些缺點:

首先,無法取消Promise,一旦新建它就會立即執(zhí)行,無法中途取消。

其次,如果不設(shè)置回調(diào)函數(shù),Promise內(nèi)部拋出的錯誤,不會反應(yīng)到外部。

第三,當(dāng)處于Pending狀態(tài)時,無法得知目前進(jìn)展到哪一個階段(剛剛開始還是即將完成)。


基本用法

resolve函數(shù)的作用是,將Promise對象的狀態(tài)從“未完成”變?yōu)椤俺晒Α保磸腜ending變?yōu)镽esolved),在異步操

作成功時調(diào)用,并將異步操作的結(jié)果,作為參數(shù)傳遞出去;

reject函數(shù)的作用是,將Promise對象的狀態(tài)從“未完成”變?yōu)椤笆 保磸腜ending變?yōu)镽ejected),在異步操作

失敗時調(diào)用,并將異步操作報出的錯誤,作為參數(shù)傳遞出去。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容