Promise 對象用於表示一個異步操做的最終完成 (或失敗), 及其結果值.
Promise 對象是一個代理對象(代理一個值),被代理的值在Promise對象建立時多是未知的。
它容許你爲異步操做的成功和失敗分別綁定相應的處理方法(handlers)。
這讓異步方法能夠像同步方法那樣返回值,但並非當即返回最終 執行結果,而是一個能表明將來出現的結果的promise對象
方法
Promise.all(iterable) [所有成功時返回]
這個方法返回一個新的promise對象,該promise對象在iterable參數對象裏全部的promise對象都成功的時候纔會觸發成功,一旦有任何一個iterable裏面的promise對象失敗則當即觸發該promise對象的失敗。
這個新的promise對象在觸發成功狀態之後,會把一個包含iterable裏全部promise返回值的數組做爲成功回調的返回值,順序跟iterable的順序保持一致;
若是這個新的promise對象觸發了失敗狀態,它會把iterable裏第一個觸發失敗的promise對象的錯誤信息做爲它的失敗錯誤信息。Promise.all方法常被用於處理多個promise對象的狀態集合。(能夠參考jQuery.when方法---譯者注)
Promise.race(iterable) [一個成功時返回]
當iterable參數裏的任意一個子promise被成功或失敗後,父promise立刻也會用子promise的成功返回值或失敗詳情做爲參數調用父promise綁定的相應句柄,並返回該promise對象。
Promise.reject(reason)
返回一個狀態爲失敗的Promise對象,並將給定的失敗信息傳遞給對應的處理方法
Promise.resolve(value)
返回一個狀態由給定value決定的Promise對象。若是該值是thenable(即,帶有then方法的對象),返回的Promise對象的最終狀態由then方法執行決定;
不然的話(該value爲空,基本類型或者不帶then方法的對象),返回的Promise對象狀態爲fulfilled,而且將該value傳遞給對應的then方法。
一般而言,若是你不知道一個值是不是Promise對象,使用Promise.resolve(value) 來返回一個Promise對象,這樣就能將該value以Promise對象形式使用。
上面所說的失敗是指不符合業務邏輯的失敗,即未獲得預期參數的失敗,因此resolve,reject的值都將返回到then中的第一二哥參數。catch的話解決的是promise中的代碼失敗,即執行過程當中發生錯誤,代碼書寫錯誤等