0

如果我想这样做,我不确定回调函数应该是什么样子。这两个函数都在一个类中,我真的很想抽象它。

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

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

我将如何在异步环境中做到这一点?

更新:

我现在尝试了这种方式(咖啡脚本):

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 回答