0

私は node.js とその NPM の貴重なサービスを手に入れています。このパッケージをインストールしようとしましたが、ドキュメントを読むと、短い ID を生成するには、次のコードが必要であることがわかります。

shortId.generate();

つまり、ID を使用するには、次のようなものが必要になります。

var id = shortId.generate();
res.end(id);

ここで間違いを犯していないことを願っていますが、非同期で物事を行う正しい方法はコールバックを使用することだと思いましたか? そして、次のようなことをしてください:

shortId.generate(function(val){
  res.end(val);
});

誰でもこの問題を明確にするのを手伝ってもらえますか? 前もって感謝します。

4

3 に答える 3

1

はい、あなたの例のコードは同期的です。Node.JS は非同期コードであるため強みがありますが、すべてが非同期であるとは限りません。

ほとんどの場合、非同期コードは IO をブロックするのに役立ちます。

于 2013-08-11T15:31:23.030 に答える
1

そのモジュールのソース コードからわかるように、ID の生成中に I/O はまったく実行されません。

ノード内のコールバックは i/o の発生時に使用されるため、プログラムは操作が実行されるまで待機せず、i/o が終了したときに呼び出される関数を提供します。

于 2013-08-11T15:31:38.000 に答える
0

shortId.generate関数はブロックしているため、結果のコールバックは提供されません。

この場合、一意の ID の生成は重い操作ではないため、これは理にかなっています。そうであれば、コードを調整してコールバック方法を有効にすることができます。

ただし、コールバックは間違いなく一般的です。たとえば、Web アプリケーションでオブジェクトをサーバーに保存したいとします。保存関数にコールバックを追加することで、ここでノンブロッキングになる可能性があるため、オブジェクトがディスク/キャッシュに書き込まれるよりも早く応答を返すことができます。

ブロッキングとノンブロッキングのいくつかの素晴らしい例については、art of nodeを読むことをお勧めします。:)

于 2013-08-11T15:31:56.467 に答える