Async function
Async function
在ES2017中引入了Async function,簡化了Promise調用callback function的方式,使得非同步操作更加簡潔、優雅。
async/await
async function
會回傳一個Promise Object,如果async function最後return了一個value,則會回傳帶有此value回傳值且狀態為resolved
的Promise; 若async function拋出例外,則會回傳帶有被拋出值且狀態為rejected
的Promise。
await
會暫停async function的執行,等待Promise物件的解析,並在Promise物件的值被resolve時回復async函式的執行。await會回傳這個被 resolve 的值,如果回傳值不是一個 Promise 物件,則會被轉換為 resolved 狀態的Promise物件回傳。
錯誤處理可將await包在try...catch
語句中。
async function foo() {
try {
let result = await doSomething();
let newResult = await doSomethingElse(result);
let finalResult = await doThirdThing(newResult);
console.log(`Got the final result: ${finalResult}`);
} catch(error) {
failureCallback(error);
}
}
Async function搭配Promise使用
若需要對async function回傳的Promise進行後續的處理,可搭配Promise調用callback function來針對不同的狀態做處理。
foo()
.then(value => {
console.log(value); // Success!
})
.catch(reason => {
console.log(reason); // Error!
});
Ref
Author Yujay
LastMod 2018-07-01