1、Promise.prototype.then()方法顯然就是Promise的精華。函數聲明:p.then(resolve, reject);。
then()方法不是靜態方法,需要經由Promise實例對象來調用。
then方法有兩個參數,第一個參數是Promise實例對象為Resolved狀態時的回調函數,它的參數就是上面Promise構造函數里resolve傳遞過來的異步操作成功的結果。
第二個參數可選,是Promise實例對象為Rejected狀態時的回調函數,它的參數就是上面Promise構造函數里reject傳遞過來的異步操作失敗的信息。
then方法最強大之處在於,它內部可以使用return或throw來實現鏈式調用。使用return或throw后的返回值是一個新的Promise實例對象(注意,不是原來那個Promise實例對象):
2、Promise.prototype.catch()同樣是實例方法,需要經由Promise實例對象來調用,用於Promise實例對象狀態為Rejected的后續處理,即異常處理。函數聲明:p.catch(reject);
catch方法本質上等價於then(null, reject),參數reject是一個回調函數,它的參數就是Promise對象狀態變為Rejected后,傳遞來的錯誤信息。