promise方法總結


優點:1、對象的狀態不受外界的影響,只有異步操作的結果可以決定是那種狀態;2、狀態一旦改變,就不會再次改變。任何時候都可以得到這個結果。在這里跟(event)事件不同,如果錯過了這個事件結果再去監聽,是監聽不到event事件的。

缺點:1、promise一旦執行無法取消。2、如果不設置回調函數promise內部拋出的錯誤,不會反映到外部。3、當處於pending(進行中)的狀態時,無法得知進行到那一階段(剛開始或者即將完成)。

基本用法:es6規定,promise對象是一個構造函數,用來生成promise實例。promise構造函數接受一個函數作為參數,該函數有兩個參數分別是resolve和reject;resolve表示成功的回調,reject表示失敗的回調;

then方法:then方法返回的是一個新的promise實例。注意:如果采用鏈式的then,可以指定一組按照次序調用的回調函數,如果前一個回調函數返回的是promise,后一個函數會等前一個狀態發生改變才會調用。

catch方法:catch方法是在promise發生錯誤時的回調。注意:如果promise狀態已經變成resolved,在拋出錯誤時無效的。promise錯誤具有‘冒泡’性質,會一直往上傳遞,直到被捕獲。

finally方法:finally方法指定無倫最后promise最后狀態如何都會執行的函數。注意:finally不接受任何參數,這就意味着無法直到前面的promise狀態。

all方法:all方法用於將多個實例包裝成一個新的promise實例。注意:只有當所有的實例都變成fulfilled時,包裝的實例狀態,才會變成fulfilled,此時他們的返回值會傳遞給新的回調函數,只要其中有一個被rejected,包裝的實例狀態就會變成rejected,此時第一個被rejected的實例返回值會傳遞給新的回調。

race方法:race方法同樣是將多個實例包裝成一個新的實例。跟上面的all方法類似。

allSettled方法:allSettled方法接收一組promise實例作為參數,包裝成一個新的實例。注意:只有等所有的實例都返回結果,才會結束。返回的結果不論成功失敗,狀態總是fulfilled,不會是失敗。

any方法:接收一組promise實例作為參數,只要有一個變為fulfilled狀態,包裝的實例就會變成fulfilled狀態,如果所有的參數都變成rejected狀態,就會變成rejected狀態。

reject方法:reject方法會返回一個新的實例,狀態為rejected。回調函數立即執行。

try方法:在實際開發中遇到無法區分函數是同步還是異步操作時,但是還想用promise來處理,可以使用try方法。

resolve方法:將現有對象轉為promise對象,它的參數分為四種情況:

1、參數是一個promise實例;如果參數是promise實例,則不作修改,原樣返回。

2、參數是一個thenable對象,是指由then方法的對象;該方法會將這個對象轉為promise對象,然后立即執行then方法。

3、如果不是具有then方法的對象或者根本不是對象;如果參數是一個原始值,或者是一個不具有then方法的對象,則promise。resolve方法返回一個新的promise對象,狀態為resolved

4、不帶有任何參數;如果不帶有任何參數會直接返回一個resolved狀態的promise對象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM