let promise = new Promise((resolve, reject)=>{ //resolve,reject都是回調函數。Promise構造函數返回一個promise對象
resolve('result');
reject('error');
})
//上面提到的promise對象有state和result兩個屬性,這兩個屬性無法被直接訪問,但可以對它們使用.then/.catch/.finally方法。
//如果 promise 為 pending 狀態,.then/catch/finally 處理程序(handler)將等待它。否則,如果 promise 已經是 settled 狀態,它們就會運行。
.then(
result=>{},
error=>{}
//兩個函數二選一,promise內部代碼執行成功有result就第一個,失敗有error就第二個。
//若只對成功感興趣,可以只設置第一個函數作為參數。
//若只對失敗感興趣,可以寫成.then(null, error=>{}),當然,更推薦的方法是.catch(error=>{})。
)
//此catch不作為上面then的hanlder,而是接著promise
.catch(
error=>{}
)
.finally(
()=>{} //finally不需要參數。和then/catch不同,它不對promise的結果作處理,單純的將result或者error傳遞下去。
)