[JavaScript] Promise

回覆文章
Leo145x
文章: 3
註冊時間: 2023-09-20, 19:10

[JavaScript] Promise

文章 Leo145x » 2023-09-25, 02:28

在 JavaScript 時常會碰到非同步程式的狀況,大部份是與伺服器取得資料時會遇到,
以前只能用回乎函式來解決非同步程式碼的問題,但是回呼函式很難維護與閱讀,如下:

代碼: 選擇全部

getJSON("data/ninjas.json", function(err, ninjas){
    getJSON(ninjas[0].location, function(err, locationInfo){
        sendOrder(locationInfo, function(err, status){
         /*Process status*/
        })
    })
});
JavaScript 在 ES6 導入 Promise,它可以更簡單的處理非同步任務,如下:

代碼: 選擇全部

const promise = new Promise((resolve, reject) => {
	resolve("Promise return");
	// reject("Promise error");
});

promise.then( res => console.log(res)).catch( err => console.log(err));
透過 new Promise 建立一個新的約定,並在約定完成時透過 then 方法接續處理回傳值,
但若遇到被拒絕的約定或異常可以透過 catch 方法處理發生的錯誤。

回覆文章