在node.js中等待满足条件

时间:2012-12-17 15:02:52

标签: node.js coffeescript

我写了一个包含以下CoffeScript代码的类:

class SomeClass
  # ...lots of other code...

  runner: ->
    process.nextTick =>
      if @some_condition
        @do_something_async()
      @runner()

它应该做的是等待@some_condition成立。这基本上可以工作,但是因为它真的快速遍历所有这一切导致大量资源使用。我该如何正确地做到这一点?

2 个答案:

答案 0 :(得分:2)

使用events来解除满足这些条件时必须运行的条件和代码。

模式是:

  1. 侦听事件并设置在事件触发时运行的侦听器

    eventEmitter.on("myEvent", function () {
        console.log("myEvent just happened");
    });
    
  2. 当您的代码中的某些内容可以使您的条件成为现实时,请检查它并相应地触发事件:

    doSomething();
    something++;
    if (something > max_something) {
        eventEmitter.emit("myEvent");
    }
    

答案 1 :(得分:0)

只需创建一个回调函数并将其传递给运行时间较长的函数,然后在完成该过程时调用回调函数,而不是使循环等待某些事情成立。