рдЕрд░реЗ,
v3.0 рдЕрднреА рддрдХ рдкреНрд░рддреНрдпреЗрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП async/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд▓рд╛рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдХреЛрдИ рдкреВрд░реА рд╕реВрдЪреА рд╣реИ, рдЬреЛ async рдлрд╝рдВрдХреНрд╢рди рдЕрдм Promise рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ?
рдЗрд╕ рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рдЕрдкреЗрдХреНрд╖рд┐рдд:
async.eachSeries(items, async (item, callback) => {
const itemStats = await someFunc(item);
callback();
});
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдореЗрдВ:
async.eachSeries(items, (item, callback) => {
(async () => {
const itemStats = await someFunc(item);
callback();
})();
});
Async рдХреЙрд▓рдмреИрдХ рдХреЛ async
рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдмрд╕ return
!
async.eachSeries(items, async (item) => {
const itemStats = await someFunc(item);
});
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореЗрд░рд╛ рдкреНрд░рд╢реНрди рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдерд╛ред
рдХреЙрд▓рдмреИрдХ рдХреЗ рдмрд┐рдирд╛() рдореИрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ:
async.eachSeries(items, async (item) => {
const itemStats = await someFunc(item);
if(!itemStats) throw new Error('no stats found');
}, (err) => {
if(err) return res.status(500);
return res.status(200).json({success: true})
});
рдпрд╣ рдХреЙрд▓рдмреИрдХ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдпрд╛?
рдЗрд╕реЗ async
/ await
рд╕рд╛рде рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛:
try {
await async.eachSeries(items, async (item) => {
const itemStats = await someFunc(item);
if(!itemStats) throw new Error('no stats found');
})
} catch (err) {
return res.status(500);
}
return res.status(200).json({success: true})
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕реЗ
async
/await
рд╕рд╛рде рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛: