Async: рдЬрдм рдХрддрд╛рд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ рддреЛ рдкреНрд░рддреАрдХреНрд╖рд┐рдд q.push рд╣рд▓ рдирд╣реАрдВ рд╣реЛрддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЬреВрди 2019  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: caolan/async

await q.push(task) рдЗрд╕ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ q.push рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╡рд╛рджрд╛ рдХрднреА рднреА рд╣рд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рди рд╣реА рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдХрддрд╛рд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ await q.push(task) рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреА рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдФрд░ рдЗрд╕рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреЙрд▓рдмреИрдХ рдкреИрд░рд╛рдореАрдЯрд░ (рдкреБрд╢ рдФрд░ рднреВрд▓рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛) рдХреЗ рдХрд╛рд░рдг рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдлреЗрдВрдХ рд╕рдХрддрд╛ рд╣реИред рдПрдХ q.asyncPush(task) рд╡рд┐рдзрд┐ рдЬреЛ рдЕрдкрдиреЗ рд╡рд╛рджреЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ рд╡рд╣ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП?

рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдиреЛрдб рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛):

const async = require('async');
let pushResult;

(async () => {
    const q = async.queue(async (task) => {
        throw new Error('Bad thing');
    });

    try {
        pushResult = q.push({some: 'data'});
        await pushResult;
        console.log('Error not catched');
    } catch (e) {
        console.log('Error catched');
    }
})();

setTimeout(() => {
    console.log('exit');
    console.log(pushResult);
}, 1000);

_рдореВрд▓ рд░реВрдк рд╕реЗ @darksabrefr рджреНрд╡рд╛рд░рд╛ https://github.com/caolan/async/pull/1641#issuecomment -498191809_ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛

bug feedback-wanted

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ asyncPush рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИред

рд╕рднреА 6 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рддреНрд░реБрдЯрд┐ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде q.push() рд╣рд▓ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛? рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ queue рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд рдХреЛ unhandledRejection s рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ред

рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ q.push рд░рд┐рдЯрд░реНрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдкреИрдЯрд░реНрди рдирд╣реАрдВ рд╣реИ (рдирд╣реАрдВ try / catch / finally рдмреНрд▓реЙрдХ рдпрд╛ .then() / .catch() рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдкреНрд░рддреНрдпрдХреНрд╖ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЗрд╕рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрди рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, 2 рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВ:

  • рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ q.asyncPush рд╡рд┐рдзрд┐ рдЬреЛ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддреА рд╣реИ рдЬреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИред рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдФрд░ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рджрд╛ рдФрд░ рдХреЙрд▓рдмреИрдХ рдПрдкреАрдЖрдИ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рд╡рд╛рджреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП q.push рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдмреВрд▓рд┐рдпрдиред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╛рджреЗ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд▓рдВрдмрд┐рдд рдирд╣реАрдВ рд░рд╣реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдкрдиреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ ;-)

рдореБрдЭреЗ asyncPush рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИред

рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж !

@ рдХреНрдпрд╛ рдЗрд╕реЗ рдХрднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?

рдпрд╣ рдерд╛, рджреЗрдЦреЗрдВ https://caolan.github.io/async/v3/docs.html#QueueObject : pushAsync

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ORESoftware picture ORESoftware  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alexpusch picture alexpusch  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

JustinBeaudry picture JustinBeaudry  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

AaronAcerboni picture AaronAcerboni  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ORESoftware picture ORESoftware  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ