我写了一个包含以下CoffeScript代码的类:
class SomeClass
# ...lots of other code...
runner: ->
process.nextTick =>
if @some_condition
@do_something_async()
@runner()
它应该做的是等待@some_condition
成立。这基本上可以工作,但是因为它真的快速遍历所有这一切导致大量资源使用。我该如何正确地做到这一点?
答案 0 :(得分:2)
使用events来解除满足这些条件时必须运行的条件和代码。
模式是:
侦听事件并设置在事件触发时运行的侦听器
eventEmitter.on("myEvent", function () {
console.log("myEvent just happened");
});
当您的代码中的某些内容可以使您的条件成为现实时,请检查它并相应地触发事件:
doSomething();
something++;
if (something > max_something) {
eventEmitter.emit("myEvent");
}
答案 1 :(得分:0)
只需创建一个回调函数并将其传递给运行时间较长的函数,然后在完成该过程时调用回调函数,而不是使循环等待某些事情成立。