เดฒเตเดเดจเดคเตเดคเดฟเดจเตเดฑเต เดฐเดเดฏเดฟเดคเดพเดตเต JavaScript-เดฒเต Async/Await-เดจเตเดฑเต เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต. เดฎเตเดคเตเดคเดคเตเดคเดฟเตฝ, เด
เดธเดฟเตปเดเตเดฐเดฃเดธเต เดเตเดกเต เดเดดเตเดคเดพเดจเตเดณเตเดณ เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดฎเดพเตผเดเดฎเดพเดฃเต Async/Await. เด เดธเดตเดฟเดถเตเดทเดค เดชเตเดฐเดคเตเดฏเดเตเดทเดชเตเดชเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เด
เดคเตเดคเดฐเด เดเตเดกเต เดเตเตพเดฌเดพเดเตเดเตเดเดณเตเด เดตเดพเดเตเดฆเดพเดจเดเตเดเดณเตเด เดเดชเดฏเตเดเดฟเดเตเดเต เดเดดเตเดคเดฟเดฏเดฟเดฐเตเดจเตเดจเต. เดฏเดฅเดพเตผเดคเตเดฅ เดฒเตเดเดจเดคเตเดคเดฟเดจเตเดฑเต เดฐเดเดฏเดฟเดคเดพเดตเต เดตเดฟเดตเดฟเดง เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดคเตเดเตเดฃเตเดเต Async/Await เดจเตเดฑเต เดเตเดฃเดเตเดเตพ เดตเตเดณเดฟเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเต.
เดเดเตเดเตพ เดเตผเดฎเตเดฎเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต: "Habr"-เดจเตเดฑเต เดเดฒเตเดฒเดพ เดตเดพเดฏเดจเดเตเดเดพเตผเดเตเดเตเด - "Habr" เดชเตเดฐเตเดฎเตเดทเดฃเตฝ เดเตเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดคเตเดเตเดเดฟเดฒเตเด เดธเตเดเดฟเตฝเดฌเตเดเตเดธเต เดเตเดดเตเดธเดฟเตฝ เดเตเดฐเตเดฎเตเดชเตเตพ 10 เดฑเตเดฌเดฟเตพเดธเต เดเดฟเดดเดฟเดตเต.
เดธเตเดเดฟเตฝเดฌเตเดเตเดธเต เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเต: เดตเดฟเดฆเตเดฏเดพเดญเตเดฏเดพเดธ เดเตบเดฒเตเตป เดเตเดดเตเดธเต
"เดเดพเดต เดกเตเดตเดฒเดชเตเดชเตผ" .
เดคเดฟเดฐเดฟเดเตเดเตเดตเดฟเดณเดฟเดเตเดเตเด
เดเตเตพ เด เดจเดฟเดถเตเดเดฟเดคเดฎเดพเดฏเดฟ เดตเตเดเตเดจเตเดจ เดเดฐเต เดซเดเดเตโเดทเดจเดพเดฃเต เดเตเตพเดฌเดพเดเตเดเต. เดฎเตเดฎเตเดชเต, เดซเดฒเด เดเดเดจเดเดฟ เดฒเดญเดฟเดเตเดเดพเดคเตเดค เดเตเดกเดฟเดจเตเดฑเต เดฎเตเดเดฒเดเดณเดฟเตฝ เดเตเตพเดฌเดพเดเตเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดฟเดฐเตเดจเตเดจเต.
Node.js-เตฝ เดเดฐเต เดซเดฏเตฝ เด เดธเดฎเดจเตเดตเดฟเดคเดฎเดพเดฏเดฟ เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดเดคเดพ:
fs.readFile(__filename, 'utf-8', (err, data) => {
if (err) {
throw err;
}
console.log(data);
});
เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเตเดธเดฎเดฏเด เดจเดฟเดฐเดตเดงเดฟ เด
เดธเดฟเตปเดเตเดฐเดฃเดธเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดจเดเดคเตเดคเตเดฃเตเดเดฟเดตเดฐเตเดฎเตเดชเตเตพ เดชเตเดฐเดถเตเดจเดเตเดเตพ เดเดฃเตเดเดพเดเตเดจเตเดจเต. เดจเดฎเตเดเตเดเต เด เดธเดพเดนเดเดฐเตเดฏเด เดธเดเตเดเตฝเดชเตเดชเดฟเดเตเดเดพเด: Arfat เดเดชเดฏเตเดเตเดคเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเดเตเดเต เดเดฐเต เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดเดคเตเดคเตเดจเตเดจเต, เดจเดฟเดเตเดเตพ เด
เดคเดฟเดจเตเดฑเต profile_img_url เดซเตเตฝเดกเต เดตเดพเดฏเดฟเดเตเดเตเดเดฏเตเด someserver.com เดธเตเตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดเดฟเดคเตเดฐเด เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดตเตเดฃเด.
เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดค เดถเตเดทเด, เดเดเตเดเตพ เดเดฟเดคเตเดฐเด เดฎเดฑเตเดฑเตเดฐเต เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต PNG-เตฝ เดจเดฟเดจเตเดจเต JPEG-เดฒเตเดเตเดเต. เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดตเดฟเดเดฏเดเดฐเดฎเดพเดฃเตเดเตเดเดฟเตฝ, เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดฑเต เดเดฎเตเดฏเดฟเดฒเดฟเดฒเตเดเตเดเต เดเดฐเต เดเดคเตเดคเต เด
เดฏเดฏเตเดเตเดเตเด. เด
เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดเดตเดจเตเดฑเดฟเดจเต เดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดตเดฟเดตเดฐเดเตเดเตพ Transformations.log เดซเดฏเดฒเดฟเตฝ เดจเตฝเดเดฟ, เดคเตเดฏเดคเดฟ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต.
เดเตเดกเดฟเดจเตเดฑเต เด เดตเดธเดพเดจ เดญเดพเดเดคเตเดคเต เดเตเตพเดฌเดพเดเตเดเตเดเดณเตเดเต เดเดตเตผเดฒเดพเดชเตเดชเตเด }) เดเดจเตเดจ เดตเดฒเดฟเดฏ เดธเดเดเตเดฏเดฏเตเด เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต. เดเดคเดฟเดจเต เดเตเตพเดฌเดพเดเตเดเต เดนเตเตฝ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเดฟเดฐเดฎเดฟเดกเต เดเดซเต เดกเตเด เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต.
เด เดฐเตเดคเดฟเดฏเตเดเต เดชเตเดฐเดพเดฏเตเดฎเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดฃเต:
- เด เดเตเดกเต เดตเดพเดฏเดฟเดเตเดเดพเตป เดชเตเดฐเดฏเดพเดธเดฎเดพเดฃเต.
- เดชเดฟเดถเดเตเดเตพ เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเตเด เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเดพเดฃเต, เดเดคเต เดชเดฒเดชเตเดชเตเดดเตเด เดฎเตเดถเด เดเตเดกเต เดเตเดฃเดจเดฟเดฒเดตเดพเดฐเดคเตเดคเดฟเดฒเตเดเตเดเต เดจเดฏเดฟเดเตเดเตเดจเตเดจเต.
เด เดชเตเดฐเดถเตเดจเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเตป, JavaScript-เตฝ เดตเดพเดเตเดฆเดพเดจเดเตเดเตพ เดเตเตผเดคเตเดคเต. .เดชเดฟเดจเตเดจเต เดเดจเตเดจ เดตเดพเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเตพเดฌเดพเดเตเดเตเดเดณเตเดเต เดเดดเดคเตเดคเดฟเดฒเตเดณเตเดณ เดจเตเดธเตเดฑเตเดฑเดฟเดเดเต เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเดเตเดเดพเตป เด เดต เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต.
เดตเดพเดเตเดฆเดพเดจเดเตเดเดณเตเดเต เดชเตเดธเดฟเดฑเตเดฑเตเดตเต เดตเดถเด, เด เดต เดเตเดกเต เดเดเดคเตเดคเตเดจเดฟเดจเตเดจเต เดตเดฒเดคเตเดคเตเดเตเดเต เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดชเดเดฐเด เดฎเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดคเดพเดดเตเดเตเดเต เดเตเดเตเดคเตฝ เดฎเดฟเดเดเตเดเดคเดพเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเดพเดฃเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดตเดพเดเตเดฆเดพเดจเดเตเดเตพเดเตเดเตเด เด เดตเดฐเตเดเต เดชเตเดฐเดถเตเดจเดเตเดเดณเตเดฃเตเดเต:
- เดจเดฟเดเตเดเตพ เดเดฐเตเดชเดพเดเต .เด เดชเตเดชเตเตพ เดเตเตผเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
- try/catch เดเดจเตเดจเดคเดฟเดจเตเดชเดเดฐเด, เดเดฒเตเดฒเดพ เดชเดฟเดถเดเตเดเดณเตเด เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเดพเตป .catch เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต.
- เดเดฐเต เดฒเตเดชเตเดชเดฟเดจเตเดณเตเดณเดฟเตฝ เดเดจเตเดจเดฟเดฒเดงเดฟเดเด เดตเดพเดเตเดฆเดพเดจเดเตเดเดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดฒเตเดฒ; เดเดฟเดฒ เดธเดจเตเดฆเตผเดญเดเตเดเดณเดฟเตฝ, เด เดต เดเตเดกเต เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดเตเดเตเดจเตเดจเต.
เด เดตเดธเดพเดจ เดชเตเดฏเดฟเดจเตเดฑเดฟเดจเตเดฑเต เด เตผเดคเตเดฅเด เดเดพเดฃเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดชเตเดฐเดถเตเดจเด เดเดคเดพ.
เดเตเดฐเดฎเดฐเดนเดฟเดคเดฎเดพเดฏ เดเดเดตเตเดณเดเดณเดฟเตฝ (0โn เดธเตเดเตเดเตปเดกเต) 10 เดฎเตเดคเตฝ 0 เดตเดฐเตเดฏเตเดณเตเดณ เดธเดเดเตเดฏเดเดณเตเดเต เดเดฐเต เดเตเดฐเดฎเด เดชเตเดฐเดฟเดจเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดซเตเตผ เดฒเตเดชเตเดชเต เดเดฃเตเดเตเดจเตเดจเต เดเดฐเตเดคเตเด. เดตเดพเดเตเดฆเดพเดจเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต, เดจเดฟเดเตเดเตพ เด เดฒเตเดชเตเดชเต เดฎเดพเดฑเตเดฑเตเดฃเตเดเดคเตเดฃเตเดเต, เด เดเตเดเดจเต เดธเดเดเตเดฏเดเตพ 0 เดฎเตเดคเตฝ 10 เดตเดฐเตเดฏเตเดณเตเดณ เดเตเดฐเดฎเดคเตเดคเดฟเตฝ เดชเตเดฐเดฟเดจเตเดฑเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเด. เด เดคเดฟเดจเดพเตฝ, เดเดฐเต เดชเตเดเตเดฏเด เดชเตเดฐเดฟเดจเตเดฑเต เดเตเดฏเตเดฏเดพเตป 6 เดธเตเดเตเดเตปเดกเตเด เดเดฐเตเดฃเตเดฃเด เดชเตเดฐเดฟเดจเตเดฑเต เดเตเดฏเตเดฏเดพเตป 2 เดธเตเดเตเดเตปเดกเตเด เดเดเตเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดเดฆเตเดฏเด เดชเตเดเตเดฏเด เดชเตเดฐเดฟเดจเตเดฑเต เดเตเดฏเตเดฏเดฃเด, เดคเตเดเตผเดจเตเดจเต เด เดเตเดเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเตเดฃเตเดเตเดกเตเตบ เดเดฐเดเดญเดฟเดเตเดเตเด.
เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เด เดชเตเดฐเดถเตเดจเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเตป เดเดเตเดเตพ Async/Await เด เดฒเตเดฒเตเดเตเดเดฟเตฝ .sort เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เดเดฐเต เดเดฆเดพเดนเดฐเดฃ เดชเดฐเดฟเดนเดพเดฐเด เด เดตเดธเดพเดจเด เดเดฃเต.
Async เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ
ES2017 (ES8)-เดฒเต เด เดธเดฟเตปเดเต เดซเดเดเตโเดทเดจเตเดเดณเตเดเต เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเตฝ เดตเดพเดเตเดฆเดพเดจเดเตเดเดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเดจเตเดณเตเดณ เดเตเดฎเดคเดฒ เดฒเดณเดฟเดคเดฎเดพเดเตเดเดฟ. เด เดธเดฟเตปเดเต เดซเดเดเตเดทเดจเตเดเตพ เดตเดพเดเตเดฆเดพเดจเดเตเดเดณเตเดเต "เดฎเตเดเดณเดฟเตฝ" เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเต เดเดพเตป เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดจเตเดจเต. เด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดเตเดฃเดชเดฐเดฎเดพเดฏเดฟ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏ เดเดถเดฏเดเตเดเดณเต เดชเตเดฐเดคเดฟเดจเดฟเดงเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เดตเดพเดเตเดฆเดพเดจเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเตเดกเดฟเดจเต เดชเดเดฐเดฎเดพเดฏเดฟ เดเดฆเตเดฆเตเดถเดฟเดเตเดเดฟเดเตเดเตเดณเตเดณเดคเดพเดฃเต เด เดธเดฟเตปเดเต เดซเดเดเตโเดทเดจเตเดเตพ.
Async/Await เดเดฐเต เดธเดฟเตปเดเตเดฐเดฃเดธเต เดถเตเดฒเดฟเดฏเดฟเตฝ เด เดธเดฟเตปเดเตเดฐเดฃเดธเต เดเตเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดฒเดฟ เดธเดเดเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเต เดธเดพเดงเตเดฏเดฎเดพเดเตเดเตเดจเตเดจเต.
เด เดคเดฟเดจเดพเตฝ, เดตเดพเดเตเดฆเดพเดจเดเตเดเตพ เด เดฑเดฟเดฏเตเดจเตเดจเดคเต Async/Await-เดจเตเดฑเต เดคเดคเตเดตเดเตเดเตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเต เดเดณเตเดชเตเดชเดฎเดพเดเตเดเตเดจเตเดจเต.
เดตเดพเดเตเดฏเดเดเดจ
เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดเดคเดฟเตฝ เดฐเดฃเตเดเต เดเตเดตเตเดกเตเดเตพ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต: เด เดธเดฟเตปเดเต, เดตเตเดฏเดฟเดฑเตเดฑเต. เดเดฆเตเดฏ เดตเดพเดเตเดเต เดซเดเดเตเดทเดจเต เด เดธเดฟเตปเดเตเดฐเดฃเดธเต เดเดเตเดเดฟ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต. เด เดคเตเดคเดฐเด เดซเดเดเตเดทเดจเตเดเตพ เดเดพเดคเตเดคเดฟเดฐเดฟเดชเตเดชเดฟเดจเตเดฑเต เดเดชเดฏเตเดเด เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดฎเดฑเตเดฑเตเดคเตเดเตเดเดฟเดฒเตเด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด เดซเดเดเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดเดฐเต เดชเดฟเดถเดเต เดธเตเดทเตเดเดฟเดเตเดเตเด.
// With function declaration
async function myFn() {
// await ...
}
// With arrow function
const myFn = async () => {
// await ...
}
function myFn() {
// await fn(); (Syntax Error since no async)
}
เดซเดเดเตโเดทเตป เดกเดฟเดเตเดฒเดฑเตเดทเดจเตเดฑเต เดคเตเดเดเตเดเดคเตเดคเดฟเดฒเตเด เดเดฐเต เด เดฎเตเดชเต เดซเดเดเตโเดทเดจเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ โ=โ เดเดฟเดนเตเดจเดคเตเดคเดฟเดจเตเด เดชเดฐเดพเตปเดคเตเดธเดฟเดธเดฟเดจเตเด เดเดเดฏเดฟเตฝ Async เดเตเตผเดเตเดเตเดจเตเดจเต.
เด เดซเดเดเตโเดทเดจเตเดเตพ เดเดฐเต เดเดฌเตโเดเดเตเดฑเตเดฑเดฟเตฝ เดฐเตเดคเดฟเดเดณเดพเดฏเดฟ เดธเตเดฅเดพเดชเดฟเดเตเดเดพเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดเตเดฒเดพเดธเต เดกเดฟเดเตเดฒเดฑเตเดทเดจเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเดพเด.
// As an object's method
const obj = {
async getName() {
return fetch('https://www.example.com');
}
}
// In a class
class Obj {
async getResource() {
return fetch('https://www.example.com');
}
}
NB! เดเตเดฒเดพเดธเต เดเตบเดธเตเดเตเดฐเดเตโเดฑเตเดฑเดฑเตเดเดณเตเด เดเตเดฑเตเดฑเดฑเตเดเดณเตเด/เดธเตเดฑเตเดฑเดฑเตเดเดณเตเด เด เดธเดฎเดจเตเดตเดฟเดคเดฎเดพเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒเตเดจเตเดจเดคเต เดเตผเดฎเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต.
เดธเตเดฎเดพเดจเตเดฑเดฟเดเตโเดธเตเด เดเดเตโเดธเดฟเดเตเดฏเตเดทเตป เดจเดฟเดฏเดฎเดเตเดเดณเตเด
Async เดซเดเดเตโเดทเดจเตเดเตพ เด เดเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ เดธเดพเดงเดพเดฐเดฃ JS เดซเดเดเตโเดทเดจเตเดเตพเดเตเดเต เดธเดฎเดพเดจเดฎเดพเดฃเต, เดเดจเตเดจเดพเตฝ เดเดดเดฟเดตเดพเดเตเดเดฒเตเดเดณเตเดฃเตเดเต.
เด เดคเดฟเดจเดพเตฝ, เด เดธเดฟเตปเดเต เดซเดเดเตเดทเดจเตเดเตพ เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดตเดพเดเตเดฆเดพเดจเดเตเดเตพ เดจเตฝเดเตเดจเตเดจเต:
async function fn() {
return 'hello';
}
fn().then(console.log)
// hello
เดชเตเดฐเดคเตเดฏเตเดเดฎเดพเดฏเดฟ, fn เดธเตเดเตเดฐเดฟเดเดเต เดนเดฒเต เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเดจเตเดจเต. เดถเดฐเดฟ, เดเดคเตเดฐเต เด เดธเดฟเตปเดเตเดฐเดฃเดธเต เดซเดเดเตโเดทเตป เดเดฏเดคเดฟเดจเดพเตฝ, เดธเตเดเตเดฐเดฟเดเดเต เดฎเตเดฒเตเดฏเด เดเดฐเต เดเตบเดธเตโเดเตเดฐเดเตโเดเตผ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดตเดพเดเตเดฆเดพเดจเดคเตเดคเดฟเตฝ เดชเตเดคเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
Async เดเดฒเตเดฒเดพเดคเต เดเดฐเต เดเดคเดฐ เดกเดฟเดธเตเตป เดเดคเดพ:
function fn() {
return Promise.resolve('hello');
}
fn().then(console.log);
// hello
เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดตเดพเดเตเดฆเดพเดจเด "เดฎเดพเดจเตเดตเดฒเดพเดฏเดฟ" เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเดจเตเดจเต. เดเดฐเต เด เดธเดฟเตปเดเตเดฐเดฃเดธเต เดซเดเดเตโเดทเตป เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดเดฐเต เดชเตเดคเดฟเดฏ เดตเดพเดเตเดฆเดพเดจเดคเตเดคเดฟเตฝ เดชเตเดคเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดฑเดฟเดเตเดเตเตบ เดฎเตเดฒเตเดฏเด เดเดฐเต เดชเตเดฐเดพเดเตเดคเดฎเดพเดฃเตเดเตเดเดฟเตฝ, เด เดธเดฟเตปเดเต เดซเดเดเตเดทเตป เดเดฐเต เดตเดพเดเตเดฆเดพเดจเดคเตเดคเดฟเตฝ เดชเตเดคเดฟเดเตเดเต เดฎเตเดฒเตเดฏเด เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเดจเตเดจเต. เดฑเดฟเดเตเดเตเตบ เดฎเตเดฒเตเดฏเด เดเดฐเต เดตเดพเดเตเดฆเดพเดจ เดตเดธเตเดคเตเดตเดพเดฃเตเดเตเดเดฟเตฝ, เด เดคเดฟเดจเตเดฑเต เดฑเตเดธเดฒเตเดทเตป เดเดฐเต เดชเตเดคเดฟเดฏ เดตเดพเดเตเดฆเดพเดจเดคเตเดคเดฟเตฝ เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเด.
const p = Promise.resolve('hello')
p instanceof Promise;
// true
Promise.resolve(p) === p;
// true
เดเดจเตเดจเดพเตฝ เดเดฐเต เด เดธเดฟเตปเดเตเดฐเดฃเดธเต เดซเดเดเตเดทเดจเดฟเตฝ เดเดฐเต เดชเดฟเดถเดเต เดเดฃเตเดเตเดเตเดเดฟเตฝ เดเดจเตเดคเต เดธเดเดญเดตเดฟเดเตเดเตเด?
async function foo() {
throw Error('bar');
}
foo().catch(console.log);
เดเดคเต เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดคเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, foo() เดจเดฟเดฐเดธเดฟเดเตเดเตเดเตเดฃเตเดเต เดเดฐเต เดตเดพเดเตเดฆเดพเดจเด เดจเตฝเดเตเด. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, Promise.resolve เดเดจเตเดจเดคเดฟเดจเต เดชเดเดฐเด เดเดฐเต เดชเดฟเดถเดเต เด เดเดเตเดเดฟเดฏ Promise.reject เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเด.
Async เดซเดเดเตโเดทเดจเตเดเตพ เดเดฒเตเดฒเดพเดฏเตโเดชเตเดชเตเดดเตเด เดเดฐเต เดตเดพเดเตโเดฆเดพเดจเด เดจเตฝเดเตเดจเตเดจเต, เดเดจเตเดคเต เดคเดฟเดฐเดฟเดเต เดจเตฝเดเดฟเดฏเดพเดฒเตเด.
เดเดฐเต เดเดพเดคเตเดคเดฟเดฐเดฟเดชเตเดชเดฟเดฒเตเด เด เดธเดฟเตปเดเตเดฐเดฃเดธเต เดซเดเดเตโเดทเดจเตเดเตพ เดคเดพเตฝเดเตเดเดพเดฒเดฟเดเดฎเดพเดฏเดฟ เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต.
เดเดพเดคเตเดคเดฟเดฐเดฟเดชเตเดชเต เดญเดพเดตเดเตเดเดณเต เดฌเดพเดงเดฟเดเตเดเตเดจเตเดจเต. เด เดคเดฟเดจเดพเตฝ, เดชเดฆเดชเตเดฐเดฏเตเดเด เดเดฐเต เดตเดพเดเตเดฆเดพเดจเดฎเดพเดฃเตเดเตเดเดฟเตฝ, เดตเดพเดเตเดฆเดพเดจเด เดจเดฟเดฑเดตเตเดฑเตเดฑเตเดจเตเดจเดคเต เดตเดฐเต เด เดธเดฟเตปเดเต เดซเดเดเตเดทเตป เดคเดพเตฝเดเตเดเดพเดฒเดฟเดเดฎเดพเดฏเดฟ เดจเดฟเตผเดคเตเดคเดฟเดตเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดชเดฆเดชเตเดฐเดฏเตเดเด เดเดฐเต เดตเดพเดเตเดฆเดพเดจเดฎเดฒเตเดฒเตเดเตเดเดฟเตฝ, เด เดคเต Promise.resolve เดตเดดเดฟ เดเดฐเต เดตเดพเดเตเดฆเดพเดจเดฎเดพเดฏเดฟ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเตเดเดฏเตเด เดคเตเดเตผเดจเตเดจเต เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
// utility function to cause delay
// and get random value
const delayAndGetRandom = (ms) => {
return new Promise(resolve => setTimeout(
() => {
const val = Math.trunc(Math.random() * 100);
resolve(val);
}, ms
));
};
async function fn() {
const a = await 9;
const b = await delayAndGetRandom(1000);
const c = await 5;
await delayAndGetRandom(1000);
return a + b * c;
}
// Execute fn
fn().then(console.log);
Fn เดซเดเดเตโเดทเตป เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเดฟเดจเตเดฑเต เดเดฐเต เดตเดฟเดตเดฐเดฃเด เดเดตเดฟเดเตเดฏเตเดฃเตเดเต.
- เด เดคเดฟเดจเต เดตเดฟเดณเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด, เดเดฆเตเดฏ เดตเดฐเดฟ const a = เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเด 9 เตฝ เดจเดฟเดจเตเดจเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต; const a = เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเด Promise.resolve(9);.
- Await เดเดชเดฏเตเดเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด, a เด เดคเดฟเดจเตเดฑเต เดฎเตเดฒเตเดฏเด เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเตเดตเดฐเต เดซเดเดเตโเดทเตป เดเดเตโเดธเดฟเดเตเดฏเตเดทเตป เดคเดพเตฝเดเตเดเดพเดฒเดฟเดเดฎเดพเดฏเดฟ เดจเดฟเตผเดคเตเดคเดฟเดตเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต (เดจเดฟเดฒเดตเดฟเดฒเต เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดคเต 9 เดเดฃเต).
- delayAndGetRandom(1000) fn เดซเดเดเตโเดทเตป เดธเตเดตเดฏเด เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดจเตเดจเดคเตเดตเดฐเต (1 เดธเตเดเตเดเตปเดกเดฟเดจเตเดถเตเดทเด) เด เดคเดฟเดจเตเดฑเต เดจเดฟเตผเดตเตเดตเดนเดฃเด เดคเดพเตฝเดเตเดเดพเดฒเดฟเดเดฎเดพเดฏเดฟ เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต. เดเดคเต 1 เดธเตเดเตเดเตปเดกเต เดจเตเดฐเดคเตเดคเตเดเตเดเต fn เดซเดเดเตโเดทเตป เดซเดฒเดชเตเดฐเดฆเดฎเดพเดฏเดฟ เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต.
- delayAndGetRandom(1000) เดฑเดฟเดธเตเตพเดตเต เดตเดดเดฟ เดเดฐเต เดฑเดพเตปเดกเด เดฎเตเดฒเตเดฏเด เดจเตฝเดเตเดจเตเดจเต, เด เดคเต b เดเดจเตเดจ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดฒเตเดเตเดเต เด เดธเตเตป เดเตเดฏเตเดฏเตเดจเตเดจเต.
- เดถเดฐเดฟ, เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดธเดฟเดฏเตเดเต เดเตเดธเต เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดเดฏเตเดเต เดเตเดธเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต. เด เดคเดฟเดจเตเดถเตเดทเด, เดเดฒเตเดฒเดพเด เดเดฐเต เดจเดฟเดฎเดฟเดทเดคเตเดคเตเดเตเดเต เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดเดชเตเดชเตเตพ delayAndGetRandom(1000) เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเตฝ เดเดจเตเดจเตเด เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเดจเตเดจเดฟเดฒเตเดฒ.
- เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, a + b * c เดซเตเตผเดฎเตเดฒ เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเตเดฒเตเดฏเดเตเดเตพ เดเดฃเดเตเดเดพเดเตเดเตเดจเตเดจเต. เดซเดฒเด Promise.resolve เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดตเดพเดเตเดฆเดพเดจเดคเตเดคเดฟเตฝ เดชเตเดคเดฟเดเตเดเต เดซเดเดเตโเดทเตป เดตเดดเดฟ เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเดจเตเดจเต.
เด เดตเดฟเดฐเดพเดฎเดเตเดเตพ ES6-เดฒเต เดเดจเดฑเตเดฑเตเดฑเดฑเตเดเดณเต เด
เดจเตเดธเตเดฎเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดพเดฏเดฟเดฐเดฟเดเตเดเดพเด, เดชเดเตเดทเต เด
เดคเดฟเตฝ เดเดฟเดฒเดคเตเดฃเตเดเต
เดชเตเดฐเดถเตเดจเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเดจเตเดจเต
เดถเดฐเดฟ, เดเดชเตเดชเตเตพ เดฎเตเดเดณเดฟเตฝ เดชเดฑเดเตเด เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เดชเดฐเดฟเดนเดพเดฐเด เดจเตเดเตเดเดพเด.
queryDatabase, sendEmail, logTaskInFile เดเดจเตเดจเดฟเดตเดฏเตเด เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฏเตเด เดชเตเดฒเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเดเต เดซเดฒเดเตเดเตพเดเตเดเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเดพเตป เดซเดฟเดจเดฟเดทเตเดฎเต เดเดพเดธเตเดเต เดซเดเดเตเดทเตป Await เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เดจเดฟเดเตเดเตพ เด เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเต เดตเดพเดเตเดฆเดพเดจเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเด เดเดจเตเดจเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดคเดพเตฝ, เดธเดฎเดพเดจเดคเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเด. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, Async/Await เดชเดคเดฟเดชเตเดชเต เดเดฒเตเดฒเดพ เดตเดพเดเตเดฏเดเดเดจ เดธเดเตเดเตเตผเดฃเตเดฃเดคเดเดณเตเด เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดเตเดเตเดจเตเดจเต. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, .then/.catch เดชเตเดฒเตเดฏเตเดณเตเดณ เดเตเตพเดฌเดพเดเตเดเตเดเดณเตเด เดเดเตเดเดฒเดเดณเตเด เดตเดฒเดฟเดฏ เดธเดเดเตเดฏเดเดณเดฟเดฒเตเดฒ.
เด เดเตเดเดเตเดเดณเตเดเต เดเดเตเดเตเดชเตเดเตเดเต เดเดณเตเดณ เดเดฐเต เดชเดฐเดฟเดนเดพเดฐเด เดเดคเดพ, เดฐเดฃเตเดเต เดเดชเตเดทเดจเตเดเตพ เดเดฃเตเดเต.
const wait = (i, ms) => new Promise(resolve => setTimeout(() => resolve(i), ms));
// Implementation One (Using for-loop)
const printNumbers = () => new Promise((resolve) => {
let pr = Promise.resolve(0);
for (let i = 1; i <= 10; i += 1) {
pr = pr.then((val) => {
console.log(val);
return wait(i, Math.random() * 1000);
});
}
resolve(pr);
});
// Implementation Two (Using Recursion)
const printNumbersRecursive = () => {
return Promise.resolve(0).then(function processNextPromise(i) {
if (i === 10) {
return undefined;
}
return wait(i, Math.random() * 1000).then((val) => {
console.log(val);
return processNextPromise(i + 1);
});
});
};
เด เดธเดฟเตปเดเต เดซเดเดเตโเดทเดจเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดณเตเดณ เดเดฐเต เดชเดฐเดฟเดนเดพเดฐเด เดเดคเดพ.
async function printNumbersUsingAsync() {
for (let i = 0; i < 10; i++) {
await wait(i, Math.random() * 1000);
console.log(i);
}
}
เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดชเดฟเดถเดเต
เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเดพเดคเตเดค เดชเดฟเดถเดเตเดเตพ เดจเดฟเดฐเดธเดฟเดเตเดเดชเตเดชเตเดเตเด เดตเดพเดเตเดฆเดพเดจเดคเตเดคเดฟเตฝ เดชเตเดคเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เด เดธเดฟเตปเดเต เดซเดเดเตโเดทเดจเตเดเตพเดเตเดเต เดชเดฟเดถเดเตเดเตพ เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเดเตเดเต เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเดพเตป try/catch เดเดชเดฏเตเดเดฟเดเตเดเดพเด.
async function canRejectOrReturn() {
// wait one second
await new Promise(res => setTimeout(res, 1000));
// Reject with ~50% probability
if (Math.random() > 0.5) {
throw new Error('Sorry, number too big.')
}
return 'perfect number';
}
canRejectOrReturn() เดเดจเตเดจเดคเต เดเดจเตเดจเตเดเดฟเตฝ เดตเดฟเดเดฏเดฟเดเตเดเตเดจเตเดจ ("เดคเดฟเดเดเตเด เดธเดเดเตเดฏ") เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดชเดฟเดถเดเดฟเดจเดพเตฝ เดชเดฐเดพเดเดฏเดชเตเดชเตเดเตเดจเตเดจ ("เดเตเดทเดฎเดฟเดเตเดเดฃเด, เดธเดเดเตเดฏ เดตเดณเดฐเต เดตเดฒเตเดคเดพเดฃเต") เดเดฐเต เด เดธเดฎเดจเตเดตเดฟเดค เดชเตเดฐเดตเตผเดคเตเดคเดจเดฎเดพเดฃเต.
async function foo() {
try {
await canRejectOrReturn();
} catch (e) {
return 'error caught';
}
}
เดฎเตเดเดณเดฟเดฒเต เดเดฆเดพเดนเดฐเดฃเด canRejectOrReturn เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดฎเตเดจเตเดจเต เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด เดคเดฟเดจเตเดฑเต เดชเดฐเดพเดเดฏเด เดเตเดฏเดพเดเตเดเต เดฌเตเดฒเตเดเตเดเดฟเดจเตเดฑเต เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเต เดเดพเดฐเดฃเดฎเดพเดเตเด. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดซเดเดเตโเดทเตป เดซเต เดจเดฟเตผเดตเดเดฟเดเตเดเดพเดคเต (เดเตเดฐเต เดฌเตเดฒเตเดเตเดเดฟเตฝ เดเดจเตเดจเตเด เดคเดฟเดฐเดฟเดเต เดฒเดญเดฟเดเตเดเดพเดคเตเดคเดชเตเดชเตเตพ) เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดชเดฟเดถเดเต เดชเดฟเดเดฟเดชเตเดเตเดเต เด เดตเดธเดพเดจเดฟเดเตเดเตเด. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เด เดซเดเดเตโเดทเตป เดชเดฐเดพเดเดฏเดชเตเดชเตเดเดฟเดฒเตเดฒ, เดเดพเดฐเดฃเด try/catch เดซเดเดเตเดทเตป foo เดคเดจเตเดจเต เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเด.
เดฎเดฑเตเดฑเตเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดเดคเดพ:
async function foo() {
try {
return canRejectOrReturn();
} catch (e) {
return 'error caught';
}
}
เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, canRejectOrReturn foo-เตฝ เดจเดฟเดจเตเดจเต เดฎเดเดเตเดเดฟเดฏเตเดจเตเดจ เดตเดธเตเดคเตเดค เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ เดซเต, เดเดจเตเดจเตเดเดฟเตฝ เดเดฐเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏ เดธเดเดเตเดฏเดฏเดฟเตฝ เด เดตเดธเดพเดจเดฟเดเตเดเตเดจเตเดจเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดชเดฟเดถเดเต เดจเตฝเดเตเดจเตเดจเต ("เดเตเดทเดฎเดฟเดเตเดเดฃเด, เดจเดฎเตเดชเตผ เดตเดณเดฐเต เดตเดฒเตเดคเดพเดฃเต"). เดเตเดฏเดพเดเตเดเต เดฌเตเดฒเตเดเตเดเต เดเดฐเดฟเดเตเดเดฒเตเด เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดฟเดฒเตเดฒ.
canRejectOrReturn เดเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดพเดธเตเดธเดพเดเตเดเดฟเดฏ เดตเดพเดเตเดฆเดพเดจเด foo เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเดจเตเดจเต เดเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดถเตเดจเด. เด เดคเดฟเดจเดพเตฝ foo เดเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเดฐเดฟเดนเดพเดฐเด canRejectOrReturn เดเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเดฐเดฟเดนเดพเดฐเดฎเดพเดฏเดฟ เดฎเดพเดฑเตเดจเตเดจเต. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเตเดกเดฟเตฝ เดฐเดฃเตเดเต เดตเดฐเดฟเดเตพ เดฎเดพเดคเตเดฐเดฎเต เดเดฃเตเดเดพเดเต:
try {
const promise = canRejectOrReturn();
return promise;
}
เดจเดฟเดเตเดเตพ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเตเด เดฎเดเดเตเดเตเดจเตเดจเดคเตเด เดเดฐเตเดฎเดฟเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเต เดเดคเดพ:
async function foo() {
try {
return await canRejectOrReturn();
} catch (e) {
return 'error caught';
}
}
เดฎเตเดเดณเดฟเดฒเต เดเตเดกเดฟเตฝ, เดเดฐเต เดชเตเตผเดซเตเดเตเดฑเตเดฑเต เดจเดฎเตเดชเดฑเตเด เดเดฐเต เดชเดฟเดถเดเตเด เดชเดฟเดเดฟเดชเตเดเตเดเต foo เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เดชเตเดฑเดคเตเดคเตเดเดเดเตเดเตเด. เดเดตเดฟเดเต เดจเดฟเดฐเดพเดเดฐเดฃเดเตเดเตพ เดเดฃเตเดเดพเดเดฟเดฒเตเดฒ. เดชเดเตเดทเต, เดจเดฟเตผเดตเดเดฟเดเตเดเดพเดคเต, canRejectOrReturn เดเดชเดฏเตเดเดฟเดเตเดเต foo เดฎเดเดเตเดเตเด. เดฑเดฟเดเตเดเตเตบ เดตเตเดฏเตเดฑเตเดฑเต canRejectOrReturn() เดฒเตเตป เดจเตเดเตเดเด เดเตเดฏเตเดคเตเดเตเดฃเตเดเต เดจเดฎเตเดเตเดเต เดเดคเต เดเดฑเดชเตเดชเดพเดเตเดเดพเด:
try {
const value = await canRejectOrReturn();
return value;
}
// โฆ
เดธเดพเดงเดพเดฐเดฃ เดคเตเดฑเตเดฑเตเดเดณเตเด เดเตเดดเดชเตเดชเดเตเดเดณเตเด
เดเดฟเดฒ เดธเดพเดนเดเดฐเตเดฏเดเตเดเดณเดฟเตฝ, Async/Await เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดชเดฟเดถเดเตเดเดณเดฟเดฒเตเดเตเดเต เดจเดฏเดฟเดเตเดเตเดเตเดเดพเด.
เดฎเดฑเดจเตเดจ เดเดพเดคเตเดคเดฟเดฐเดฟเดชเตเดชเต
เดเดคเต เดชเดฒเดชเตเดชเตเดดเตเด เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเต - เดตเดพเดเตเดฆเดพเดจเดคเตเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเตเดตเตเดกเต เดฎเดฑเดจเตเดจเต:
async function foo() {
try {
canRejectOrReturn();
} catch (e) {
return 'caught';
}
}
เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดเตเดกเดฟเตฝ เดเดพเดคเตเดคเดฟเดฐเดฟเดชเตเดชเตเด เดคเดฟเดฐเดฟเดเตเดเตเดตเดฐเดตเตเด เดเดฒเตเดฒ. เด เดคเดฟเดจเดพเตฝ foo เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด 1 เดธเตเดเตเดเตปเดกเต เดเดพเดฒเดคเดพเดฎเดธเด เดเตเดเดพเดคเต เดจเดฟเตผเดตเดเดฟเดเตเดเดพเดคเต เดชเตเดฑเดคเตเดคเตเดเดเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดพเตฝ เดตเดพเดเตเดฆเดพเดจเด เดจเดฟเดฑเดตเตเดฑเตเดฑเดชเตเดชเตเดเตเด. เดเดคเต เดเดฐเต เดชเดฟเดถเดเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดจเดฟเดฐเดธเดฟเดเตเดเตฝ เดเดฑเดฟเดฏเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, UnhandledPromiseRejectionWarning เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเดชเตเดชเตเดเตเด.
เดเตเตพเดฌเดพเดเตเดเตเดเดณเดฟเตฝ เด เดธเดฟเตปเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ
Async เดซเดเดเตโเดทเดจเตเดเตพ .map เด เดฒเตเดฒเตเดเตเดเดฟเตฝ .filter-เตฝ เดเตเตพเดฌเดพเดเตเดเตเดเดณเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเดพเดฑเตเดฃเตเดเต. GitHub-เดฒเต เดเดชเตเดชเตบ เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดเดณเตเดเต เดเดฃเตเดฃเด เดจเตฝเดเตเดจเตเดจ fetchPublicReposCount(เดเดชเดฏเตเดเตเดคเตเดจเดพเดฎเด) เดซเดเดเตโเดทเตป เดเดฐเต เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฃเต. เดฎเตเดจเตเดจเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพ เดเดฃเตเดเตเดจเตเดจเต เดชเดฑเดฏเดเตเดเต, เด เดตเดฐเตเดเต เด เดณเดตเตเดเตพ เดจเดฎเตเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฃเต. เด เดเดพเดธเตเดเตเดเดฟเดจเตเดณเตเดณ เดเตเดกเต เดเดคเดพ:
const url = 'https://api.github.com/users';
// Utility fn to fetch repo counts
const fetchPublicReposCount = async (username) => {
const response = await fetch(`${url}/${username}`);
const json = await response.json();
return json['public_repos'];
}
เดเดเตเดเตพเดเตเดเต ArfatSalman, octocat, norvig เด เดเตเดเตเดฃเตเดเตเดเตพ เดเดตเดถเตเดฏเดฎเดพเดฃเต. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดเตเดฏเตเดฏเตเดจเตเดจเต:
const users = [
'ArfatSalman',
'octocat',
'norvig'
];
const counts = users.map(async username => {
const count = await fetchPublicReposCount(username);
return count;
});
.เดฎเดพเดชเตเดชเต เดเตเตพเดฌเดพเดเตเดเดฟเตฝ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต. เดเดตเดฟเดเต เดเตเดฃเตเดเตเดเตพ เดเดจเตเดจเดคเต เดตเดพเดเตเดฆเดพเดจเดเตเดเดณเตเดเต เดเดฐเต เดจเดฟเดฐเดฏเดพเดฃเต, เดเตเดเดพเดคเต .map เดเดจเตเดจเดคเต เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดฎเตเดณเตเดณ เดเดฐเต เด เดเตเดเดพเดค เดเตเตพเดฌเดพเดเตเดเดพเดฃเต.
เดเดพเดคเตเดคเดฟเดฐเดฟเดชเตเดชเดฟเดจเตเดฑเต เด เดฎเดฟเดค เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณ เดเดชเดฏเตเดเด
เดจเดฎเตเดเตเดเต เด เดเตเดกเต เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เดเดเตเดเตเดเดพเด:
async function fetchAllCounts(users) {
const counts = [];
for (let i = 0; i < users.length; i++) {
const username = users[i];
const count = await fetchPublicReposCount(username);
counts.push(count);
}
return counts;
}
เดเดตเดฟเดเต เดฑเดฟเดชเตเดชเต เดจเดฎเตเดชเตผ เดเตเดฃเตเดเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดธเตเดฅเดพเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดคเตเดเตผเดจเตเดจเต เด เดจเดฎเตเดชเตผ เดเตเดฃเตเดเตเดธเต เด เดฑเตเดฏเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเดจเตเดจเต. เดธเตเตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฆเตเดฏ เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดฑเต เดกเดพเดฑเตเดฑ เดเดคเตเดคเตเดจเตเดจเดคเต เดตเดฐเต, เดคเตเดเตผเดจเตเดจเตเดณเตเดณ เดเดฒเตเดฒเดพ เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเด เดธเตเดฑเตเดฑเดพเตปเดกเตโเดฌเต เดฎเตเดกเดฟเตฝ เดเดฏเดฟเดฐเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดเตเดกเดฟเดจเตเดฑเต เดชเตเดฐเดถเตเดจเด. เด เดเตเดเดจเต, เดเดฐเต เดธเดฎเดฏเด เดเดฐเต เดเดชเดฏเตเดเตเดคเดพเดตเต เดฎเดพเดคเตเดฐเดฎเต เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดเดฏเตเดณเตเดณเต.
เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฐเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดเดเดฆเตเดถเด 300 เดเดเดเดธเต เดเดเตเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดเดฒเตเดฒเดพ เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพเดเตเดเตเด เดเดคเต เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เดเดฐเต เดธเตเดเตเดเตปเดกเดพเดฃเต; เดฐเตเดเตเดฏเดฎเดพเดฏเดฟ เดเตเดฒเดตเดดเดฟเดเตเดเตเดจเตเดจ เดธเดฎเดฏเด เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเดเต เดเดฃเตเดฃเดคเตเดคเต เดเดถเตเดฐเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดพเตฝ เดฑเดฟเดชเตเดชเตเดฏเตเดเต เดเดฃเตเดฃเด เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเต เดชเดฐเดธเตเดชเดฐเด เดเดถเตเดฐเดฏเดฟเดเตเดเดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เดชเตเดฐเดเตเดฐเดฟเดฏเดเตพ เดธเดฎเดพเดจเตเดคเดฐเดฎเดพเดเตเดเดพเด. เดเดคเดฟเดจเต .map, Promise.all เดเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต:
async function fetchAllCounts(users) {
const promises = users.map(async username => {
const count = await fetchPublicReposCount(username);
return count;
});
return Promise.all(promises);
}
Promise.all เดตเดพเดเตโเดฆเดพเดจเดเตเดเดณเตเดเต เดเดฐเต เดจเดฟเดฐ เดเตปเดชเตเดเตเดเดพเดฏเดฟ เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด เดเดฐเต เดตเดพเดเตโเดฆเดพเดจเด เดจเตฝเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเต, เด เดฑเตเดฏเดฟเดฒเต เดเดฒเตเดฒเดพ เดตเดพเดเตเดฆเดพเดจเดเตเดเดณเตเด เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเดฟเดฏ เดถเตเดทเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฆเตเดฏ เดจเดฟเดฐเดธเดฟเดเตเดเตฝ เดชเตเตผเดคเตเดคเดฟเดฏเดพเดฏเดฟ. เด เดตเดฏเตเดฒเตเดฒเดพเด เดเดฐเต เดธเดฎเดฏเด เดเดฐเดเดญเดฟเดเตเดเดพเดคเตเดคเดคเต เดธเดเดญเดตเดฟเดเตเดเดพเด - เดเดฐเตเดธเดฎเดฏเด เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเต เดเดฑเดชเตเดชเดพเดเตเดเดพเตป, เดจเดฟเดเตเดเตพเดเตเดเต เดชเดฟ-เดฎเดพเดชเตเดชเต เดเดชเดฏเตเดเดฟเดเตเดเดพเด.
เดคเตเดฐเตเดฎเดพเดจเด
เดตเดฟเดเดธเดจเดคเตเดคเดฟเดจเต เด
เดธเดฟเตปเดเต เดซเดเดเตโเดทเดจเตเดเตพ เดเตเดเตเดคเตฝ เดชเตเดฐเดพเดงเดพเดจเตเดฏเดฎเตผเดนเดฟเดเตเดเตเดจเตเดจเต. เดถเดฐเดฟ, เด
เดธเดฟเตปเดเต เดซเดเดเตโเดทเดจเตเดเดณเตเดเต เด
เดกเดพเดชเตเดฑเตเดฑเตเดตเต เดเดชเดฏเตเดเดคเตเดคเดฟเดจเต, เดจเดฟเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดฃเด
เดธเตเดเดฟเตฝเดฌเตเดเตเดธเต เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเต:
- เดชเตเดฐเดพเดฏเตเดเดฟเด เดเตเดดเตเดธเต
"เดฎเตเดฌเตเตฝ เดกเตเดตเดฒเดชเตเดชเตผ PRO" .- เดเตบเดฒเตเตป เดเตเดดเตเดธเดฟเดจเต เด เดชเตเดเตเดทเดฟเดเตเดเต
"เดชเตเดคเตเดคเดฃเดฟเดฒเต เดกเดพเดฑเตเดฑเดพ เด เดจเดฒเดฟเดธเตเดฑเตเดฑเต" .- เดฐเดฃเตเดเตเดตเตผเดทเดคเตเดคเต เดชเตเดฐเดพเดเตเดเดฟเดเตเดเตฝ เดเตเดดเตเดธเต
"เดเดพเตป เดเดฐเต เดตเตเดฌเต เดกเตเดตเดฒเดชเตเดชเตผ PRO เดเดฃเต" .
เด เดตเดฒเดเดฌเด: www.habr.com