4

約束がES6にあることが今日発表されたようです。

私はプロミスの専門家ではありませんでした - .then() の壮大なチェーンは、async.waterfall() の関数の単純なリストよりも複雑に見えますが、とにかくそれらを学ばなければならないようです。

では、他の非常に人気のあるワークフローであるasync.each()に相当するものは何でしょうか?

async.each(items, processItem, function(err){
    doSomething(err)
});

たとえば、各アイテムに対して processItem 関数を実行し、すべてが完了したら、doSomething を続行します (processItem() のいずれかが失敗した場合は、別のことを行います)。

  • 約束でこれを行うにはどうすればよいですか?
  • 非同期の場合のように、promiseユーザー ドキュメント ( promise の仕様、実際のサンプル ワークフロー、および promise でそれらを行う方法ではない) の公式の場所はありますか?
4

2 に答える 2

5

約束でこれを行うにはどうすればよいですか?

仮定processItemはコールバックを取りませんが、あなたが書く約束を返します

all(items.map(processItem)).then(doSomething);

のような promise の配列を取るallライブラリの関数はどこにありますか。持っていない場合は、この単純な実装で次のことができます。allQ.all

function all(promises) {
    return promises.reduce(function(m, p) {
        return m.then(function(res) {
            return r.then(function(r) { return res.concat([r]); });
        });
    }, fulfill([]));
}

非同期のように、Promise ユーザー ドキュメント (Promise の仕様、ワークフロー、および Promise でそれらを行う方法ではない) の公式の場所はありますか?

いいえ。すべての Promise ライブラリには独自のドキュメントがあり、Web 上には多くのチュートリアルがあります。「公式」とは仕様だけですが、ユーザーが読むには十分に短くて理解しやすいと思います。

于 2013-09-19T16:37:29.707 に答える
3

非同期の場合のように、Promise ユーザー ドキュメント (Promise の仕様、実際のワークフローの例、Promise でそれらを行う方法ではない) の公式の場所はありますか?

私たちは、Q wiki に一般的な約束のリソースのページをまとめています。ワークフローと構成に関しては、「Q を使用して Node.js Promises を構成する方法」が最も役立つと思います。タイトルにもかかわらず、実際には Node.js 固有ではありません。

于 2013-10-07T07:17:36.160 に答える