1

ノードの使い方を学ぼうとしています。ここまでは順調ですね。しかし、JavasSript にはかなり慣れていないため、(少なくとも私にとっては) よりクリーンで読みやすい構文が利用可能な場合、コールバックを使用する意味がわかりません。

私の要点をより明確にするためのコード例を次に示します。

コールバックあり:

exports.create = function(req, res){
  new Todo({
    content    : req.body.content,
    updated_at : Date.now()
  }).save(function(err, todo, count){
    res.redirect('/');
  });
};

コールバックなし:

exports.create = function(req, res){
  newtodo = new Todo({
    content    : req.body.content,
    updated_at : Date.now()
  });
  newtodo.save();
  res.redirect('/');
};

これらのコードは両方とも、新しい todo とリダイレクトを保存します。

私の好みは2番目のもので、読みやすいと思いますが、私にはわからない違いがあるかもしれません. 違いはありますか?

4

2 に答える 2

3

簡単に言えば、時間のかかる操作の実行が終了している間、ユーザー インターフェイスがロックされないようにするためです。

2 番目の例では、save 関数が ajax 呼び出しを行う場合、それを同期 ajax 呼び出しにする必要があります。

于 2013-05-14T13:39:04.600 に答える
1

最初のものについては、クエリが完了した後にエラーを処理する機会があります。2 番目の場合、悪いことは何も起こらず、クエリは常に成功し、ユーザーはその後常にどこかにリダイレクトされると自動的に想定します。

ユーザーにエラーを表示したくない場合は (2) を使用し、それ以外の場合は (1) を使用します。(2) は、イベントをログに記録したり、電子メールを送信したり、ユーザー (および/またはあなた) が失敗しても気にしないようなことをしたい場合に特に便利です。ほとんどの場合、エラーを黙って無視するのではなく、何らかのエラーをエンド ユーザーに表示する必要があるため、(1) を選択します。

于 2013-05-15T06:26:10.383 に答える