等待在node.js中满足条件
我写了一个包含以下CoffeScript代码的类:
class SomeClass # ...lots of other code... runner: -> process.nextTick => if @some_condition @do_something_async() @runner()
它应该做的是等待@some_condition
为真。 这基本上工作,但是因为它确实快速循环所有这些会导致大量的资源使用。 我将如何正确地做到这一点?
使用事件来解耦符合这些条件时必须运行的条件和代码。
模式是:
-
听一个事件,并设置一个侦听器,当事件被触发时就会运行
eventEmitter.on("myEvent", function () { console.log("myEvent just happened"); });
-
当你的代码中的某些东西可以使你的条件变成真实的时候,检查它并相应地触发一个事件:
doSomething(); something++; if (something > max_something) { eventEmitter.emit("myEvent"); }
而不是有一个等待某些东西为真的循环,只需要创build一个callback函数并将其传递给长时间运行的函数,并在处理完成时调用callback函数。