Async: рдХреНрдпрд╛ рдЖрдк async.series рдХрд╛ рдЙрдкрдпреЛрдЧ async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдирд╡ре░ 2017  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: caolan/async

рдХреНрдпрд╛ рдЖрдк async.series рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ async рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВрдиреЗ рдХреБрдЫ рд╕рд░рд▓ рдкреНрд░рдпреЛрдЧ рдХрд┐рдП, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХреЗред

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

рдХреБрдЫ рдкрд╛рдЧрд▓ рд╡рд┐рдЬреНрдЮрд╛рди рдХреА рдпреЛрдЬрдирд╛ рд╣реИред ЁЯШЙ

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

рд╣рд╛рдБ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рд▓реЗрдХрд┐рди рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреЗрд╡рд▓ рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░реЗрдВ рдпрд╛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреЗрдВред http://caolan.github.io/async/global.html

рдареАрдХ рд╣реИ - рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдЕрдЧрд░ рдореБрдЭреЗ рдХреБрдЫ рдЧрд▓рдд рд╕рдордЭрд╛ рдЗрд╕ рддрд░рд╣?

    const result = await async.each(openFiles, async (file) => {
        try: {
            await asyncOperation(file);
            return null
        } catch(err) {
            return err
        }
    })

рдЪреВрдВрдХрд┐ async рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ, рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрди рддрдХ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

    const result = await async.each(openFiles, async (file) => {
        await asyncOperation(file);
    })

рдмреЗрд╣рддрд░ рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдореНрди рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдкрд░ рдирд╣реАрдВ рд▓рд╛ рд╕рдХрддрд╛:

for (const tasks of fileTasks) {
    const result = await async.each(tasks, async (file) => {
        await asyncOperation(file);
    })
}

рдореИрдВ рд╕рдордЭ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдлреЙрд░-рдСрдлрд╝ рд▓реВрдк рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдСрдкрд░реЗрд╢рдВрд╕ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛?

рдЪреВрдВрдХрд┐ async.each рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ await рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдЕрдЪреНрдЫрд╛ рдареАрдХ рд╣реИред рддреЛ async рдХреЗ рд▓рд┐рдП/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ async рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреИрдЯрд░реНрди рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрдм рдЕрдЧрд░ рдпрд╣ async рдХреЗ рд░реЛрдбрдореИрдк рдкрд░ рд╣реИрдВ?

рдХреБрдЫ рдкрд╛рдЧрд▓ рд╡рд┐рдЬреНрдЮрд╛рди рдХреА рдпреЛрдЬрдирд╛ рд╣реИред ЁЯШЙ

рдпрд╛ util.promisify()

(рдпрд╛ pify() )

рдпрд╣ async.series рд╕реЗ async.each рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рд╕реЗ рдХреНрдпреЛрдВ рдЬрд╛рддрд╛ рд╣реИ?

const _async = require('async');
const _ = require('lodash');

public doSomething = async(num) : Promise<any> => {
     return num*num + 1;
} 

public async getResults() {
    let results = new Array<any>();
    let tasks = [];

    try {
      const list = [1,2,3,4,5,6,7,8,9,10];

      list.forEach((item) => {
        tasks.push((callback) => {
          this.doSomething(item.then(
            (res) => {
              results.push(res);
              callback(null, res);
            }
          );
        })
      })

      results = await new Promise((resolve) => {
        _async.series(tasks, (err, res) => {
          console.log(res);
          if (err) {
            results.push(err);
          }
          resolve(results);
        })
      });
    } catch (err) {
      results.push(err.message);
      console.log(err);
    }

    return _.join(results, '\r\n');
  }



@ рдЕрд░реНрд▓реА рдЕрд░реЗ рдлреЗрди рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕реНрдХрд░рдг рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ?
рдореИрдВ caolan/async рд╕рдВрд╕реНрдХрд░рдг 2.6.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

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

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

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

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

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

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

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