เชฒเซเชเชจเชพ เชฒเซเชเช 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 เชฎเชพเช เชตเชเชจเซ เชเชฎเซเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชนเชคเชพ. เชคเซเช เชคเชฎเชจเซ เชเซเชฒเชฌเซ เชเซเชธเชจเชพ เชเชเชกเชพ เชฎเชพเชณเชเชพเชจเซ เชถเชฌเซเชฆ เชธเชพเชฅเซ เชฌเชฆเชฒเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ. เชชเชเซ.
เชตเชเชจเซเชจเซเช เชธเชเชพเชฐเชพเชคเซเชฎเช เชชเชพเชธเซเช เช เชเซ เชเซ เชคเซเช เชเซเชกเชจเซ เชกเชพเชฌเซเชฅเซ เชเชฎเชฃเซ เชเชฐเชตเชพเชจเซ เชฌเชฆเชฒเซ เชเชชเชฐเชฅเซ เชจเซเชเซ เชธเซเชงเซ เชตเชงเซ เชธเชพเชฐเซ เชฐเซเชคเซ เชตเชพเชเชเชตเชพ เชฏเซเชเซเชฏ เชฌเชจเชพเชตเซ เชเซ. เชเซ เชเซ, เชตเชเชจเซเชจเซ เชชเชฃ เชคเซเชฎเชจเซ เชธเชฎเชธเซเชฏเชพเช เชเซ:
- เชคเชฎเชพเชฐเซ เชเชฃเซเช เชเชฎเซเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชชเชเซ.
- เชเซเชฐเชพเชฏ/เชเซเชเชจเซ เชฌเชฆเชฒเซ, เชฌเชงเซ เชญเซเชฒเซเชจเซ เชนเซเชจเซเชกเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ .catch เชจเซ เชเชชเชฏเซเช เชฅเชพเชฏ เชเซ.
- เชเช เชฒเซเชชเชฎเชพเช เชฌเชนเซเชตเชฟเชง เชตเชเชจเซ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเซเช เชนเชเชฎเซเชถเชพ เช เชจเซเชเซเชณ เชนเซเชคเซเช เชจเชฅเซ; เชเซเชเชฒเชพเช เชเชฟเชธเซเชธเชพเชเชฎเชพเช, เชคเซเช เชเซเชกเชจเซ เชเชเชฟเชฒ เชฌเชจเชพเชตเซ เชเซ.
เช เชนเซเช เชเช เชธเชฎเชธเซเชฏเชพ เชเซ เชเซ เชเซเชฒเซเชฒเชพ เชฎเซเชฆเซเชฆเชพเชจเซ เช เชฐเซเชฅ เชฌเชคเชพเชตเชถเซ.
เชงเชพเชฐเซ เชเซ เชเชชเชฃเซ เชชเชพเชธเซ เชฒเซเชช เชฎเชพเชเซ เชเซ เชเซ เชฐเซเชจเซเชกเชฎ เช เชเชคเชฐเชพเชฒเซ (0โn เชธเซเชเชเชก) เชชเชฐ 10 เชฅเซ 0 เชธเซเชงเซเชจเซ เชธเชเชเซเชฏเชพเชเชจเซ เชเซเชฐเชฎ เชเชพเชชเซ เชเซ. เชตเชเชจเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ, เชคเชฎเชพเชฐเซ เช เชฒเซเชช เชฌเชฆเชฒเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชเซเชฅเซ เชเชฐเซเชจเซ เชจเชเชฌเชฐเซ 0 เชฅเซ 10 เชธเซเชงเซเชจเชพ เชเซเชฐเชฎเชฎเชพเช เชเชพเชชเชตเชพเชฎเชพเช เชเชตเซ. เชคเซเชฅเซ, เชเซ เชถเซเชจเซเชฏ เชเชพเชชเชตเชพเชฎเชพเช 6 เชธเซเชเชจเซเชก เช เชจเซ เชเช เชเชพเชชเชตเชพเชฎเชพเช 2 เชธเซเชเชจเซเชกเชจเซ เชธเชฎเชฏ เชฒเชพเชเซ, เชคเซ เชถเซเชจเซเชฏ เชชเซเชฐเชฅเชฎ เชชเซเชฐเชฟเชจเซเช เชฅเชตเซ เชเซเชเช, เช เชจเซ เชชเชเซ เชเช เชเชพเชชเชตเชพ เชฎเชพเชเซเชจเซเช เชเชพเชเชจเซเชเชกเชพเชเชจ เชถเชฐเซ เชฅเชถเซ.
เช เชจเซ เช เชฒเชฌเชคเซเชค, เช เชฎเซ เช เชธเชฎเชธเซเชฏเชพเชจเซ เชเชเซเชฒเชตเชพ เชฎเชพเชเซ Async/Await เช เชฅเชตเชพ .sort เชจเซ เชเชชเชฏเซเช เชเชฐเชคเชพ เชจเชฅเซ. เชเช เชเชฆเชพเชนเชฐเชฃ เชเชเซเชฒ เช เชเชคเซ เชเซ.
Async เชเชพเชฐเซเชฏเซ
ES2017 (ES8) เชฎเชพเช async เชเชพเชฐเซเชฏเซเชจเชพ เชเชฎเซเชฐเชพเชฅเซ เชตเชเชจเซ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพเชจเซเช เชเชพเชฐเซเชฏ เชธเชฐเชณ เชฌเชจเซเชฏเซเช เชเซ. เชนเซเช เชจเซเชเชงเซเช เชเซเช เชเซ async เชเชพเชฐเซเชฏเซ เชตเชเชจเซเชจเซ "เชเซเช เชชเชฐ" เชเชพเชฎ เชเชฐเซ เชเซ. เช เชเชพเชฐเซเชฏเซ เชเซเชฃเชพเชคเซเชฎเช เชฐเซเชคเซ เช เชฒเช เชเซเชฏเชพเชฒเซเชจเซเช เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชคเซเชต เชเชฐเชคเชพ เชจเชฅเซ. Async เชซเชเชเซเชถเชจเชจเซ เชนเซเชคเซ เชเซเชกเชจเชพ เชตเชฟเชเชฒเซเชช เชคเชฐเซเชเซ เชเซ เชเซ เชตเชเชจเซเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ.
Async/Await เช เชธเชฟเชเชเซเชฐเชจเชธ เชถเซเชฒเซเชฎเชพเช เช เชธเซเชฎเซเชณ เชเซเชก เชธเชพเชฅเซ เชเชพเชฐเซเชฏ เชเซเช เชตเชตเชพเชจเซเช เชถเชเซเชฏ เชฌเชจเชพเชตเซ เชเซ.
เชเชฎ, เชตเชเชจเซ เชเชพเชฃเชตเชพเชฅเซ 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 เชเชพเชฐเซเชฏเซ เชนเชเชฎเซเชถเชพ เชตเชเชจเซ เชเชชเซ เชเซ:
async function fn() {
return 'hello';
}
fn().then(console.log)
// hello
เชเชพเชธ เชเชฐเซเชจเซ, fn เชถเชฌเซเชฆเชฎเชพเชณเชพ เชนเซเชฒเซ เชชเชฐเชค เชเชฐเซ เชเซ. เช เซเช เชเซ, เชเชพเชฐเชฃ เชเซ เช เชเช เช เชธเซเชฎเซเชณ เชเชพเชฐเซเชฏ เชเซ, เชธเซเชเซเชฐเชฟเชเช เชฎเซเชฒเซเชฏ เชเชจเซเชธเซเชเซเชฐเชเซเชเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชตเชเชจเชฎเชพเช เชเชตเชฐเชฟเชค เชเซ.
เช เชนเซเช Async เชตเชฟเชจเชพ เชตเซเชเชฒเซเชชเชฟเช เชกเชฟเชเชพเชเชจ เชเซ:
function fn() {
return Promise.resolve('hello');
}
fn().then(console.log);
// hello
เช เชเชฟเชธเซเชธเชพเชฎเชพเช, เชตเชเชจ "เชฎเซเชจเซเชฏเซเช เชฒเซ" เชชเชฐเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เช เชธเซเชฎเซเชณ เชเชพเชฐเซเชฏ เชนเชเชฎเซเชถเชพ เชจเชตเชพ เชตเชเชจเชฎเชพเช เชเชตเชฐเชฟเชค เชนเซเชฏ เชเซ.
เชเซ เชตเชณเชคเชฐ เชฎเซเชฒเซเชฏ เชเช เชเชฆเชฟเชฎ เชเซ, เชคเซ async เชซเชเชเซเชถเชจ เชคเซเชจเซ เชตเชเชจเชฎเชพเช เชฒเชชเซเชเซเชจเซ เชฎเซเชฒเซเชฏ เชชเชฐเชค เชเชฐเซ เชเซ. เชเซ เชฐเชฟเชเชฐเซเชจ เชตเซเชฒเซเชฏเซ เช เชชเซเชฐเซเชฎเชฟเชธ เชเชฌเซเชเซเชเซเช เชนเซเชฏ, เชคเซ เชคเซเชจเซเช เชฐเชฟเชเซเชฒเซเชฏเซเชถเชจ เชจเชตเชพ เชตเชเชจเชฎเชพเช เชชเชฐเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
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 เชซเชเชเซเชถเชจเซเชธ เชนเชเชฎเซเชถเชพ เชตเชเชจเชจเซเช เชเชเชเชชเซเช เชเชฐเซ เชเซ, เชชเชเซ เชญเชฒเซเชจเซ เชถเซเช เชชเชฐเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ.
เช เชธเซเชฎเซเชณ เชเชพเชฐเซเชฏเซ เชฆเชฐเซเช เชฐเชพเชน เชชเชฐ เชตเชฟเชฐเชพเชฎ เชฒเซ เชเซ.
เชฐเชพเชน เช เชญเชฟเชตเซเชฏเชเซเชคเชฟเช เชชเชฐ เช เชธเชฐ เชเชฐเซ เชเซ. เชคเซเชฅเซ, เชเซ เช เชญเชฟเชตเซเชฏเชเซเชคเชฟ เชตเชเชจ เชเซ, เชคเซ เชตเชเชจ เชชเซเชฐเซเช เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช เชธเซเชงเซ 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 = await 9 เชฎเชพเชเชฅเซ เชฐเซเชชเชพเชเชคเชฐเชฟเชค เชฅเชพเชฏ เชเซ; in const a = เชฐเชพเชน เชเซเช Promise.resolve(9);
- Await เชจเซ เชเชชเชฏเซเช เชเชฐเซเชฏเชพ เชชเชเซ, เชซเชเชเซเชถเชจ เชเชเซเชเซเชเซเชฏเซเชถเชจเชจเซ เชคเซเชจเซ เชเชฟเชเชฎเชค เชจ เชฎเชณเซ เชคเซเชฏเชพเช เชธเซเชงเซ เชธเชธเซเชชเซเชจเซเชก เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ (เชตเชฐเซเชคเชฎเชพเชจ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชฎเชพเช เชคเซ 9 เชเซ).
- delayAndGetRandom(1000) fn เชซเชเชเซเชถเชจเชจเชพ เชเชเซเชเซเชเซเชฏเซเชถเชจเชจเซ เชคเซเชฏเชพเช เชธเซเชงเซ เชฅเซเชญเชพเชตเซ เชเซ เชเซเชฏเชพเช เชธเซเชงเซ เชคเซ เชชเซเชฐเซเชฃ เชจ เชฅเชพเชฏ (1 เชธเซเชเชจเซเชก เชชเชเซ). เช เช เชธเชฐเชเชพเชฐเช เชฐเซเชคเซ 1 เชธเซเชเชจเซเชก เชฎเชพเชเซ fn เชซเชเชเซเชถเชจเชจเซ เชฐเซเชเซ เชเซ.
- เชฐเชฟเชเซเชฒเซเชฏเซเชถเชจ เชฆเซเชตเชพเชฐเชพ delayAndGetRandom(1000) เชฐเซเชจเซเชกเชฎ เชฎเซเชฒเซเชฏ เชเชชเซ เชเซ, เชเซ เชชเชเซ เชเชฒ b เชจเซ เชธเซเชเชชเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
- เช เซเช เชเซ, เชเชฒ c เชธเชพเชฅเซเชจเซ เชเซเชธ เชเชฒ a เชธเชพเชฅเซเชจเชพ เชเซเชธ เชเซเชตเซ เช เชเซ. เชคเซ เชชเชเซ, เชฌเชงเซเช เชเช เชธเซเชเชจเซเชก เชฎเชพเชเซ เช เชเชเซ เชเชพเชฏ เชเซ, เชชเชฐเชเชคเซ เชนเชตเซ เชตเชฟเชฒเชเชฌ เชเชเชกเชเซเชเชฐเซเชจเซเชกเชฎ(1000) เชเชเชเชชเชฃ เชชเชพเชเซเช เชเชชเชคเซเช เชจเชฅเซ เชเชพเชฐเชฃ เชเซ เชคเซ เชเชฐเซเชฐเซ เชจเชฅเซ.
- เชชเชฐเชฟเชฃเชพเชฎเซ, เชฎเซเชฒเซเชฏเซเชจเซ เชเชฃเชคเชฐเซ เชซเซเชฐเซเชฎเซเชฏเซเชฒเชพ a + b * c เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชชเชฐเชฟเชฃเชพเชฎ Promise.resolve เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชตเชเชจเชฎเชพเช เชเชตเชฐเชฟเชค เชเซ เช เชจเซ เชซเชเชเซเชถเชจ เชฆเซเชตเชพเชฐเชพ เชชเชฐเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เช เชตเชฟเชฐเชพเชฎ ES6 เชฎเชพเช เชเชจเชฐเซเชเชฐเชจเซ เชฏเชพเชฆ เช
เชชเชพเชตเซ เชเซ, เชชเชฐเชเชคเซ เชคเซเชฎเชพเช เชเชเชเช เชเซ
เชธเชฎเชธเซเชฏเชพเชจเซเช เชจเชฟเชฐเชพเชเชฐเชฃ
เชตเซเชฒ, เชนเชตเซ เชเชชเชฃเซ เชเชชเชฐ เชเชฃเชพเชตเซเชฒ เชธเชฎเชธเซเชฏเชพเชจเซ เชเชเซเชฒ เชเซเชเช.
FinishMyTask เชซเชเชเซเชถเชจ 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 เชตเชฟเชงเซเชฏเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชเซเชฒ เชเซ.
async function printNumbersUsingAsync() {
for (let i = 0; i < 10; i++) {
await wait(i, Math.random() * 1000);
console.log(i);
}
}
เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชฎเชพเช เชญเซเชฒ
เช เชธเชเชฌเชเชงเชฟเชค เชญเซเชฒเซเชจเซ เชจเชเชพเชฐเชตเชพเชฎเชพเช เชเชตเซเชฒเชพ เชตเชเชจเชฎเชพเช เชฒเชชเซเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชเซ เชเซ, เชเชธเชฟเชเช เชซเชเชเซเชถเชจเซเชธ เชธเชฟเชเชเซเชฐเชจเชธ เชฐเซเชคเซ เชญเซเชฒเซเชจเซ เชนเซเชจเซเชกเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ เชเซเชฐเชพเชฏ/เชเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ.
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 เชจเซ เชเชเซเชเชฟเชเซเชฏเซเช เชเชฐเชตเชพเชจเซ เช เชชเซเชเซเชทเชพ เชฐเชพเชเซ เชเซ, เชคเซเชจเซ เชชเซเชคเชพเชจเซ เชจเชฟเชทเซเชซเชณเชคเชพ เชเซเช เชฌเซเชฒเซเชเชจเชพ เช เชฎเชฒเชฎเชพเช เชชเชฐเชฟเชฃเชฎเชถเซ. เชชเชฐเชฟเชฃเชพเชฎเซ, เชซเชเชเซเชถเชจ foo เชเซเชฏเชพเช เชคเซ เช เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชธเชพเชฅเซ เชธเชฎเชพเชชเซเชค เชฅเชถเซ (เชเซเชฏเชพเชฐเซ เชเซเชฐเชพเชฏ เชฌเซเชฒเซเชเชฎเชพเช เชเชเช เชชเชพเชเซเช เชฎเชณเชคเซเช เชจเชฅเซ) เช เชฅเชตเชพ เชเซเช เชฅเชฏเซเชฒเซ เชญเซเชฒ เชธเชพเชฅเซ. เชชเชฐเชฟเชฃเชพเชฎเซ, เช เชซเชเชเซเชถเชจ เชจเชฟเชทเซเชซเชณ เชเชถเซ เชจเชนเซเช เชเชพเชฐเชฃ เชเซ เชเซเชฐเชพเชฏ/เชเซเช เชซเชเชเซเชถเชจ foo เชจเซ เช เชนเซเชจเซเชกเชฒ เชเชฐเชถเซ.
เช เชนเซเช เชฌเซเชเซเช เชเชฆเชพเชนเชฐเชฃ เชเซ:
async function foo() {
try {
return canRejectOrReturn();
} catch (e) {
return 'error caught';
}
}
เชคเซ เชนเชเซเชเชค เชชเชฐ เชงเซเชฏเชพเชจ เชเชชเชตเซเช เชฏเซเชเซเชฏ เชเซ เชเซ เชเชฆเชพเชนเชฐเชฃเชฎเชพเช, canRejectOrReturn foo เชฅเซ เชชเชฐเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เช เชเชฟเชธเซเชธเชพเชฎเชพเช เชซเซ เชเชพเช เชคเซ เชธเชเชชเซเชฐเซเชฃ เชธเชเชเซเชฏเชพ เชธเชพเชฅเซ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เชเซ เช เชฅเชตเชพ เชญเซเชฒ เชชเชฐเชค เชเชฐเซ เชเซ ("เชฎเชพเชซ เชเชฐเชถเซ, เชธเชเชเซเชฏเชพ เชเซเชฌ เชฎเซเชเซ"). เชเซเช เชฌเซเชฒเซเช เชเซเชฏเชพเชฐเซเชฏ เชเชฒเชพเชตเชตเชพเชฎเชพเช เชเชตเชถเซ เชจเชนเซเช.
เชธเชฎเชธเซเชฏเชพ เช เชเซ เชเซ foo canRejectOrReturn เชฎเชพเชเชฅเซ เชชเชธเชพเชฐ เชเชฐเซเชฒ เชตเชเชจ เชชเชฐเชค เชเชฐเซ เชเซ. เชคเซเชฅเซ foo เชจเซ เชเชเซเชฒ canRejectOrReturn เชจเซ เชเชเซเชฒ เชฌเชจเซ เชเชพเชฏ เชเซ. เช เชเชฟเชธเซเชธเชพเชฎเชพเช, เชเซเชกเชฎเชพเช เชซเชเซเชค เชฌเซ เชฒเซเชเซเช เชนเชถเซ:
try {
const promise = canRejectOrReturn();
return promise;
}
เชเซ เชคเชฎเซ เชฐเชพเชน เชเซเช เช เชจเซ เชชเชพเชเชพ เชซเชฐเซ เชคเซ เชถเซเช เชฅเชพเชฏ เชเซ เชคเซ เช เชนเซเช เชเซ:
async function foo() {
try {
return await canRejectOrReturn();
} catch (e) {
return 'error caught';
}
}
เชเชชเชฐเซเชเซเชค เชเซเชกเชฎเชพเช, foo เชเช เชธเชเชชเซเชฐเซเชฃ เชธเชเชเซเชฏเชพ เช เชจเซ เชชเชเชกเชพเชฏเซเชฒเซ เชญเซเชฒ เชฌเชเชจเซ เชธเชพเชฅเซ เชธเชซเชณเชคเชพเชชเซเชฐเซเชตเช เชฌเชนเชพเชฐ เชจเซเชเชณเซ เชเชถเซ. เช เชนเซเช เชเซเช เชเชจเชเชพเชฐ เชฅเชถเซ เชจเชนเซเช. เชชเชฐเชเชคเซ foo canRejectOrReturn เชธเชพเชฅเซ เชชเชฐเชค เชเชตเชถเซ, undefined เชธเชพเชฅเซ เชจเชนเซเช. เชเชพเชฒเซ เชฐเซเชเชฐเซเชจ await canRejectOrReturn() เชฒเชพเชเชจเชจเซ เชฆเซเชฐ เชเชฐเซเชจเซ เชคเซเชจเซ เชเชพเชคเชฐเซ เชเชฐเซเช:
try {
const value = await canRejectOrReturn();
return value;
}
// โฆ
เชธเชพเชฎเชพเชจเซเชฏ เชญเซเชฒเซ เช เชจเซ เชฎเซเชถเซเชเซเชฒเซเช
เชเซเชเชฒเชพเช เชเชฟเชธเซเชธเชพเชเชฎเชพเช, Async/Await เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฅเซ เชญเซเชฒเซ เชฅเช เชถเชเซ เชเซ.
เชฐเชพเชน เชญเซเชฒเซ เชเชฏเชพ
เช เชเชฃเซ เชตเชพเชฐ เชฅเชพเชฏ เชเซ - await เชเซเชตเชฐเซเชก เชตเชเชจ เชชเชนเซเชฒเชพเช เชญเซเชฒเซ เชเชพเชฏ เชเซ:
async function foo() {
try {
canRejectOrReturn();
} catch (e) {
return 'caught';
}
}
เชเซเชฎ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ, เชเซเชกเชฎเชพเช เชเซเช เชฐเชพเชน เชเซ เชตเชณเชคเชฐ เชจเชฅเซ. เชคเซเชฅเซ foo เชนเชเชฎเซเชถเชพ 1 เชธเซเชเชจเซเชกเชจเชพ เชตเชฟเชฒเชเชฌ เชตเชฟเชจเชพ เช เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชธเชพเชฅเซ เชฌเชนเชพเชฐ เชจเซเชเชณเซ เชเซ. เชชเชฐเชเชคเซ เชตเชเชจ เชชเซเชฐเซเชฃ เชฅเชถเซ. เชเซ เชคเซ เชญเซเชฒ เช เชฅเชตเชพ เช เชธเซเชตเซเชเชพเชฐ เชซเซเชเชเซ เชเซ, เชคเซ UnhandledPromiseRejectionWarning เชเชนเซเชตเชพเชฎเชพเช เชเชตเชถเซ.
เชเซเชฒเชฌเซ เชเซเชธเชฎเชพเช Async เชเชพเชฐเซเชฏเซ
Async เชซเชเชเซเชถเชจเซเชธ เชเชฃเซ เชตเชพเชฐ .map เช เชฅเชตเชพ .filter เชฎเชพเช เชเซเชฒเชฌเซเชเซเชธ เชคเชฐเซเชเซ เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชฏ เชเซ. เชเชฆเชพเชนเชฐเชฃ fetchPublicReposCount(username) เชซเชเชเซเชถเชจ เชเซ, เชเซ GitHub เชชเชฐ เชเชชเชจ เชฐเชฟเชชเซเชเซเชเชฐเซเชเชจเซ เชธเชเชเซเชฏเชพ เชชเชฐเชค เชเชฐเซ เชเซ. เชเชพเชฒเซ เชเชนเซเช เชเซ เชคเซเชฏเชพเช เชคเซเชฐเชฃ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เชเซ เชเซเชฎเชจเชพ เชฎเซเชเซเชฐเชฟเชเซเชธเชจเซ เช เชฎเชจเซ เชเชฐเซเชฐ เชเซ. เช เชเชพเชฐเซเชฏ เชฎเชพเชเซเชจเซ เชเซเชก เช เชนเซเช เชเซ:
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'];
}
เช เชฎเชจเซ เช เชฐเชซเชค เชธเชฒเชฎเชพเชจ, เชเชเซเชเซเชเซเช, เชจเซเชฐเซเชตเชฟเช เชเชเชพเชเชจเซเชเซเชธเชจเซ เชเชฐเซเชฐ เชเซ. เช เชเชฟเชธเซเชธเชพเชฎเชพเช เช เชฎเซ เชเชฐเซเช เชเซเช:
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 เชเชจเชชเซเช เชคเชฐเซเชเซ เชตเชเชจเซเชจเซ เชถเซเชฐเซเชฃเซ เชฎเซเชณเชตเซ เชเซ เช เชจเซ เชตเชเชจ เชชเชฐเชค เชเชฐเซ เชเซ. เชฌเชพเชฆเชฎเชพเช, เชเชฐเซเชฎเชพเชเชจเชพ เชฌเชงเชพ เชตเชเชจเซ เชชเซเชฐเซเชฃ เชฅเชฏเชพ เชชเชเซ เช เชฅเชตเชพ เชชเซเชฐเชฅเชฎ เช เชธเซเชตเซเชเชพเชฐ เชธเชฎเชฏเซ, เชชเซเชฐเซเชฃ เชฅเชพเชฏ เชเซ. เชเชตเซเช เชฌเชจเซ เชถเชเซ เชเซ เชเซ เชคเซ เชฌเชงเชพ เชเช เช เชธเชฎเชฏเซ เชถเชฐเซ เชฅเชคเชพ เชจเชฅเซ - เชเช เชธเชพเชฅเซ เชถเชฐเซเชเชคเชจเซ เชเชพเชคเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเซ p-map เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ.
เชจเชฟเชทเซเชเชฐเซเชท
Async เชเชพเชฐเซเชฏเซ เชตเชฟเชเชพเชธ เชฎเชพเชเซ เชตเชงเซเชจเซ เชตเชงเซ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชฌเชจเซ เชฐเชนเซเชฏเชพ เชเซ. เช เซเช เชเซ, async เชเชพเชฐเซเชฏเซเชจเชพ เช
เชจเซเชเซเชฒเชจเชถเซเชฒ เชเชชเชฏเซเช เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชเชชเชฏเซเช เชเชฐเชตเซ เชเซเชเช
เชธเซเชเชฟเชฒเชฌเซเชเซเชธ เชญเชฒเชพเชฎเชฃ เชเชฐเซ เชเซ:
- เชชเซเชฐเซเชเซเชเชฟเชเชฒ เชเซเชฐเซเชธ
"เชฎเซเชฌเชพเชเชฒ เชกเซเชตเชฒเชชเชฐ เชชเซเชฐเซ" .- เชเชจเชฒเชพเชเชจ เชเซเชฐเซเชธ เชฒเชพเชเซ เชเชฐเซเชฏเซ
"เชชเชพเชฏเชฅเซเชจเชฎเชพเช เชกเซเชเชพ เชตเชฟเชถเซเชฒเซเชทเช" .- เชฌเซ เชตเชฐเซเชทเชจเซ เชชเซเชฐเซเชเซเชเชฟเชเชฒ เชเซเชฐเซเชธ
"เชนเซเช เชตเซเชฌ เชกเซเชตเชฒเชชเชฐ เชชเซเชฐเซ เชเซเช" .
เชธเซเชฐเซเชธ: www.habr.com