0

これを実行したい場合、コールバック関数がどのように表示されるかわかりません。両方の関数はクラスにあり、私は本当にそれを抽象化したいです。

doesexist: function(setvalue) {
  redisclient.sismember('setname', setvaue, callbackfuntion(value));
}

someothermethod: function() {
  if (doesexist()){
    // doSomething
  }
}

非同期環境でそれを行うにはどうすればよいですか?

アップデート:

私は今それをそのように試しました(coffeescript):

deoesexist: (setvalue, cb) ->
  @r.sismember 'setname', setvalue, (err, res) -> cb(res)

someothermethod: (setvalue) ->
  @doesexist setvalue, (exists) =>
    unless exists
      # emit an event that calls a function
      # that probably adds the not existing value.
      # I just don't want to redo this. That's
      # what this function is all about

それはそのようにかなりうまくいくようです。

4

2 に答える 2

0

制御フローライブラリhttps://npmjs.org/browse/keyword/flowをチェックアウトして、どのアプローチが最適かを判断する必要があります。非同期ライブラリhttps://github.com/caolan/asyncをお勧めします。

あなたの質問に答えるには、次のように問題を解決します。

doesexist: function(setvalue, callback) {
    redisclient.sismember('setname', setvaue, callback);
}

someothermethod: function(somevalue) {
   doesexist(somevalue, function(err, exists) {
         if (exists) {
            // doSomething
         }
   })
}

お役に立てば幸いです。

ジェイ

于 2012-12-28T20:27:29.343 に答える
0

私はそれを考え出した。基本的に、if ステートメントをコールバック関数に置き換えます。実際にやっていることをより高いレベルで考えれば簡単ですが、慣れていないと難しいです。

答えについては、私の更新を参照してください。

于 2012-12-29T09:12:14.363 に答える