6

したがって、バックエンドの node.js 開発者であれば、asyncという素晴らしいライブラリについて知っているでしょう。

あなたがフロントエンド開発者なら、underscoreという素晴らしいライブラリについて知っているでしょう。


問題は、これらのライブラリの両方がある程度同様の機能を提供する傾向があるということです。

それで問題は、browserifyを使用してフロントエンドで async を使用することは理にかなっていますか?

4

2 に答える 2

16

Underscoreは、、、などeachの便利な関数を提供するユーティリティライブラリです。ただし、これらはすべて同期して機能します。例えばmapreduce

var results = _.map([1,2,3], function(value, index, list) {
  return value * 2;
});

console.log(results);

出力:[2、4、6]

お気づきの方もいらっしゃると思いますが、console.log(results)ステートメントは_.map()関数が完全に実行されて結果が返された後にのみ呼び出されます。これは、ブラウザのスクリプトで使用するプログラミングの典型的な同期スタイルです。

が王様であるサーバーでNode.jsは、上記の同期プログラミングはイベントループに悪影響を及ぼします。そこでは、非同期スタイルのプログラミングが好まれます。ライブラリを使用して同じmap方法を見てください。async

async.map([1,2,3],
        function mapper(item, callback) {
            callback(null, item * 2);
        },
        function(error, results) {
            console.log(results);
        }
);

出力:[2、4、6]

お気づきの方もいらっしゃると思いますが、マップされた配列は戻り値として返されません。代わりに、マップされた配列がコールバック関数に渡され、コールバックconsole.log(results)内で結果を出力するために使用されます。

このスタイルのプログラミングの副作用の1つは、iterator関数がシリアル順にではなく並列に呼び出されることです。これにより、イテレータ関数がI / Oを使用する場合に、スケーラビリティが大幅に向上します。

したがって、asyncライブラリによって提供される機能の一部は、によって提供される機能と似ていUnderscoreますが、上記で示したように、それらは異なる目的のためのものです。現在、どちらを使用するかの決定は、アプリケーションの要件とプログラミングスタイルによって異なります。

于 2012-11-25T11:56:27.200 に答える
1

非同期の readmeによると、ブラウザで直接使用できます。browersify の使用は過剰に思えます。

于 2012-11-07T21:27:47.453 に答える