等待在node.js中满足条件

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

class SomeClass # ...lots of other code... runner: -> process.nextTick => if @some_condition @do_something_async() @runner() 

它应该做的是等待@some_condition为真。 这基本上工作,但是因为它确实快速循环所有这些会导致大量的资源使用。 我将如何正确地做到这一点?

Solutions Collecting From Web of "等待在node.js中满足条件"

使用事件来解耦符合这些条件时必须运行的条件和代码。

模式是:

  1. 听一个事件,并设置一个侦听器,当事件被触发时就会运行

     eventEmitter.on("myEvent", function () { console.log("myEvent just happened"); }); 
  2. 当你的代码中的某些东西可以使你的条件变成真实的时候,检查它并相应地触发一个事件:

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

而不是有一个等待某些东西为真的循环,只需要创build一个callback函数并将其传递给长时间运行的函数,并在处理完成时调用callback函数。