Promise含義
- Promise是非同步程式設計的一種解決方案, 比傳統的解決方案--回撥函式和事件--更合理更強大。
- 所謂的promise簡單來說就是一個容器,裡面儲存著未來才會結束的事件,它有兩個特點(1)物件的狀態不受外界影響。(2)一旦狀態改變就不會再變,任何時候都可以得到這個結果
基本用法
Promise.prototype.then()
- then方法返回的是一個新的Promise例項(注意,不是原來的Promise例項),因此可以採用鏈式寫法,即then方法之後在呼叫另一個then
getJSON("/posts.json").then(function() {
return json.post;
}).then(function(post) {
});
複製程式碼
Promise.prototype.catch()
- Promise.prototype.catch方法是.then(null, rejection)或.then(undefined, refjection)的別名,用於指定發生錯誤時的回撥函式
getJSON('/posts.json').then(function(posts) {
})catch(function(error) {
console.log('放生錯誤!', error);
});
複製程式碼
Promise.prototype.finally()
- finally 方法用於指定不管Promise物件的最後狀態如何,都會執行的操作,該方法是ES2018引入的標準
promise.then(result => {...})
.catch(result => {...})
.finally(() => {...})
server.listen(port).then(function() {
}).finally(server.stop)
複製程式碼
- finally 方法的回撥函式不接受任何引數,因此這意味著沒有辦法知道前面的Promise狀態是fulfiled還是rejected。這表明,finally方法裡執行的操作,應該與狀態無關,不依賴與promise的執行結果
Promise.all()
- Promise.all方法將多個Promise例項包裝成一個Promise例項
const p = Promise.all([p1, p2, p3]);
複製程式碼