Promise.prototype.finally()
finally( )方法用於指定不管Promise對象最后狀態如何,都會執行的操作,不管promise最后的狀態,在執行完 then或catch指定的回調函數以后,都會執行finally方法指定的回調函數。
promise .then(result => {···}) .catch(error => {···}) .finally(() => {···});
finally
方法的回調函數不接受任何參數,這意味着沒有辦法知道,前面的 Promise 狀態到底是fulfilled
還是rejected
。這表明,finally
方法里面的操作,應該是與狀態無關的,不依賴於 Promise 的執行結果。
finally方法本質上是then方法的特例,
promise .finally(() => { // 語句 }); // 等同於 promise .then( result => { // 語句 return result; }, error => { // 語句 throw error; } );
上面代碼中,如果不使用finally
方法,同樣的語句需要為成功和失敗兩種情況各寫一次。有了finally
方法,則只需要寫一次。