感覺 Node.js 的世界突然美好了起來
終於可以用比較直覺的角度去寫程式
特別是那些習慣寫 C, Java, Python 等的人
但是在方便之餘
還是要特別小心 await 的使用情境
以避免造成效能上的問題
在下列例子中
testAsync1 會比 testAsync2 有更好的效能
因為在 testAsync1 中
我們會先用一個變數 promise2 去承接 Promise
此時,這個 Promise 裡面的操作有機會先執行
等到 await promise1 時,promise2 就差不多執行完畢 (秒數一樣)
故在 await promise2 時,promise2 應該就是一個 ready 的狀態 (ok or failed)
而在 testAsync2 中
因為我們少了那個中間變數
故在 await 時,至少一定要等待 3 秒
這就因此造成了 2 者間的差異
function getPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('ok');
}, 3000);
});
}
async function testAsync1() {
var date1 = new Date();
var promise1 = getPromise();
var promise2 = getPromise();
var res;
res = await promise1;
res = await promise2;
console.log(res, new Date() - date1);
return Promise.resolve();
};
async function testAsync2() {
var date1 = new Date();
var res;
res = await getPromise();
res = await getPromise();
console.log(res, new Date() - date1);
return Promise.resolve();
};
testAsync1();
testAsync2();
執行結果如下
ok 3002
ok 6001
沒有留言:
張貼留言