01. await 後面接的是 1 個 Promise,一定會等待此 Promise 狀況 ready
02. new Promise((resolve, reject) => {
// ok
resolve(xx);
return;
// error
reject(new Error("xxx"));
});
03. async function 一定要回傳 1 個 Promise
async function asyncXXX(xx) {
try {
// return value, 會被隱性轉成 Promise
return 1;
// Use static method
return Promise.resolve(xx);
} catch(err) {
return Promise.reject(err);
}
}
asyncXXX(xx).then((xx) => {
console.log(xx);
// 如果有 return Promise 會形成 Promise chain
return 1;
return new Promise(...);
}).catch((err) => {
// err is Error type
console.log(err.message);
});
04. Promise 只是確保在 Promise 控制的範圍內可以照順序
在呼叫 Promise 時 本身還是非同步
故底下會先印出 "after" 而不是 "in then"
async function test() {
return Promise.resolve();
}
test.then(() => {
console.log("in then");
});
console.log("after");
05. async / await 只是語法糖,骨子裡還是 Promise 的運用
沒有留言:
張貼留言