рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
async.map(['file1','file2','file3'], fs.stat, function(err, results) {
// results is now an array of stats for each file
});
рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрддрд╛рддрд╛ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд▓реЛрдЧ fs.stat
рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡реЗ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВ
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рд╣рдореЗрдВ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдбреЙрдХреНрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореИрдВ async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдпрд╛ рдПрдордУрдИ рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝рдирд╛)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдордп рдирд╣реАрдВ рд╣реИред
рд╢рд╛рдпрдж рдореИрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБред
рдореИрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
async
/ await
рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг, рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рдХрдоfoo
/ bar
рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП JSDoc рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ @example
рдмреНрд▓реЙрдХ рд╣реИрдВред рдкрд╛рдЧрд▓ рд╣реЛ рдЬрд╛рдирд╛!
рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдВ, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
await async.map(['file1','file2','file3'], fs.promises.stat);
// or without async lib
await Promise.all(['file1','file2','file3'].map(name => fs.promises.stat(name))
рдпрд╛ рдпрджрд┐ рдЖрдк рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдИ рд╡рд╕реНрддреБ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
await async.auto({
file1: async()=>fs.promises.stat('file1'),
file2: async()=>fs.promises.stat('file2')
file3: async()=>fs.promises.stat('file3')
})
// or without async lib
Object.fromEntries(
await Promise.all(['file1','file2','file3'].map(async name => [name, await fs.promises.stat(name)]))
)
рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ async.mapLimit рдХреЗ рдПрдХ (рд╕рд░рд▓) рд╡рд╛рджрд╛-рдЖрдзрд╛рд░рд┐рдд рдЙрджрд╛рд╣рд░рдг рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реВрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рдмрд┐рдирд╛ рднреАред рдЕрдм рддрдХ рдХреЛрдИ рдЧреИрд░-рдХреЙрд▓рдмреИрдХ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред
@flatcoding https://github.com/caub/misc/blob/master/utils/promise-concurrent.js , рдпрджрд┐ рдЖрдк await
рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╣рд╛рдп рд╕рд┐рд░рд┐рд▓ @caub ,
рдЖрдкрдХреЗ рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ 'рдкреНрд░рддреАрдХреНрд╖рд╛' рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реВрдВ, рдмрд▓реНрдХрд┐ 'рдПрд╕рд┐рдВрдХ' рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП 'рдЕрдЪреНрдЫреЗ рдЙрджрд╛рд╣рд░рдг' рдХреЗ рд▓рд┐рдП рд╣реВрдВ, рдЬрд┐рд╕реЗ рдореИрдВ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╡рд╛рджрд╛ рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ .then .catch рд╢рд╛рдорд┐рд▓ рд╣реИред
рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╡рд╛рджреЗ рдХреЗ рд╕рд╛рде рдПрд╕рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╕рдВрдШрд░реНрд╖ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ рдЪрд░рдг 1 рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ) ...
рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВред, рдЕрдкрдирд╛ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрд╕рд┐рдВрдХ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред
рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ "рд╕рд░рд▓ рд╡рд╛рджрд╛-рдЖрдзрд╛рд░рд┐рдд рдЙрджрд╛рд╣рд░рдг" рд╕реЗ, рдЖрдкрдХрд╛ рдорддрд▓рдм рдХрд┐рд╕реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдерд╛
рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ
рдареАрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВ, рдФрд░ рдореИрдВ рдпрд╣ рднреА рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдХреЙрд▓рдмреИрдХ рд╢реИрд▓реА рдореЗрдВ 'async' рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдХреЙрд▓рдмреИрдХ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред рдЕрдм рддрдХ, рдореИрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рдХрдо рд╕реЗ рдХрдо async.map(Limit) рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдЪреВрдВрдХрд┐ рдпрд╣ рдзрд╛рдЧрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ 'рдмреЗрд╣рддрд░ рдЙрджрд╛рд╣рд░рдг' рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдпрд╣рд╛рдВ рдзреНрдпрд╛рди рджрд┐рдпрд╛ ...
рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдирд╣реАрдВ рдЙрдард╛ рд╕рдХрд╛ рдФрд░ рдПрдХ рд╡рд╛рджреЗ рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣рд╛ рдерд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЙрд╕ рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рднреА рдЙрдард╛рдпрд╛ред
рд╣рд╛рдп @caub , рд╕рдВрдЧреНрд░рд╣ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ, рдХреЙрд▓рдмреИрдХ, рд╡рд╛рджреЗ, рдФрд░ рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдПрдХ рд╢реЙрдЯ рд▓рд┐рдпрд╛ред
@romanbalyan рдЕрдЪреНрдЫрд╛
рдЬрд┐рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╣рдо рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд╡реЗ рд╣реИрдВ async.parallel
, рдФрд░ async.auto
, рдХреНрдпрд╛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рднреА рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ?
рдиреЛрдЯ: рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рд╣рд▓реНрдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк async IIFE (async ()=>{
async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ
@caub ,
рд╣рд╛рдВ, рдореИрдВ рдЬрд▓реНрдж рд╣реА рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рднреА рдХрд╡рд░ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ рдпрджрд┐ рд╕рдВрдЧреНрд░рд╣ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЬреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рд╣реИрдВ рд╡реЗ рдпрд╣рд╛рдВ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред
@romanbalyan рдЖрдк рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрд╕ рдкреАрдЖрд░ рд╢рд╛рдЦрд╛ рдХреЛ рдЬреАрдердм рдкреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ( http://romanbalyan.github рдореЗрдВ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХрд░
@caub , рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ред рдРрд╕рд╛ рдХрд┐рдпрд╛, рдФрд░ рдЕрдм https://romanbalyan.github.io/async/v3/ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рд╣рд╛рдп @caub ,
рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╡рд╛рджрд╛ рдФрд░ async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдирдореВрдиреЗ - async.parallel
, async.series
, рдФрд░ async.auto
@romanbalyan рдЕрдЪреНрдЫрд╛! https://romanbalyan.github.io/async/v3/docs.html#auto
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓рдмреИрдХ рдФрд░ рд╡рд╛рджреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣рдореЗрд╢рд╛ рдХрд╛рдлреА рд╕рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ, рд╢рд╛рдпрдж рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рд╡реИрд╕реЗ рднреА рдЬрдм рд╡рд╛рджреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕рд╛рдорд╛рди рдХреЛ рд╣рд▓реНрдХрд╛ рдХрд░ рджреЗрдЧрд╛
рдЕрдЪреНрдЫрд╛ рд╕рд╛рдорд╛рди рдФрд░!
@ рдЧреЛрднреА
рдХреНрдпрд╛ рдореБрдЭреЗ рд╕рдВрдЧреНрд░рд╣ рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рднреА рд╡рд╛рджреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рд╣рд╛рдБ рдЖрдк рдХрд░ рд╕рдХрддреЗ рдереЗ
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк async рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг:
const delay = (t, v) => new Promise(r => setTimeout(r, t, v));
try {
console.time('parallel')
const results = await async.parallel({
one: async () => delay(200, 1),
two: async () => delay(100, 2),
});
console.timeLog('parallel', results);
// parallel: 200ms { one: 1, two: 2 }
}
catch (err) {
console.log(err);
}
@romanbalyan рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдоред рдХрд╛рд╢ рдореБрдЭреЗ рдХреБрдЫ рджрд┐рди рдкрд╣рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рдЖрдкрдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓ рдЬрд╛рддрд╛! рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рд╕реЗ рдЪреАрдЬреЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рдХрдо рджрд░реНрджрдирд╛рдХ рд╣реЛрддрд╛ :-)
рдореИрдВ рдЕрднреА рднреА рдХреБрдЫ рдПрд╕рд┐рдВрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкрд░ 100% рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рдФрд░ рд╡рд╛рджрд╛ рд╣реИред рд╕рд╛рде рд╣реА рд╕рд╛рде Promise.allSettled .. рдореВрд▓ рд░реВрдк рд╕реЗ рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдореВрд▓ рд╕рдордХрдХреНрд╖ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ . (?)
const results = await async.parallel({
one: async () => delay(200, 1),
two: async () => delay(100, 2),
});
рдореВрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛:
const results = Object.fromEntries(
await Promise.all(
Object.entries({
one: async () => delay(200, 1),
two: async () => delay(100, 2),
})
.map(async ([k, v]) => [k, await v()])
)
);
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рд╣рдореЗрдВ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдбреЙрдХреНрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореИрдВ async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдпрд╛ рдПрдордУрдИ рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝рдирд╛)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдордп рдирд╣реАрдВ рд╣реИред