Async: async.seriesをasync / awaitで使用できますか?

作成日 2017年11月04日  ·  11コメント  ·  ソース: caolan/async

async.series関数内でasyncawaitを使用できますか?

簡単な実験をいくつか行いましたが、期待どおりに機能しませんでした。

docs question

最も参考になるコメント

いくつかの狂った科学が計画されています。 😉

全てのコメント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);
    })
}

for-ofループで非同期操作が可能になることを理解していましたか?

async.eachはPromiseを返さないため、 await返すことはできません。

ああ、わかりました。 したがって、for-of async / awaitオプションを使用することは、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');
  }



@aearlyちょっとフェン、どの特別バージョンがasync / awaitをサポートしているか教えていただけますか?
caolan / asyncバージョン2.6.0を使用しています

このページは役に立ちましたか?
0 / 5 - 0 評価