4

我将fibers包用于node.js. 假设我创建了几个纤程,并希望在主线程中等待其中任何一个完成。该对象的APIFiber仅列出非阻塞函数,例如run. 该Future对象似乎根本没有记录在案。那么这应该怎么做呢?这是一个示例程序(缺少waitForSomeFiberToFinish函数的定义):

var Fiber = require('fibers');

function sleep(ms) {
  var fiber = Fiber.current;
  setTimeout(function() {
    fiber.run();
  }, ms);
  Fiber.yield();
}

f1 = Fiber(function(){sleep(1000);});
f2 = Fiber(function(){sleep(2000);});

f1.run();
f2.run();

// The question is: how does one implement waitForSomeFiberToFinish?
waitForSomeFiberToFinish([f1, f2]);
console.log('We should have slept now for one second and at this point f1 is finished');
waitForSomeFiberToFinish([f1, f2]);
console.log('We should have slept now for another second and at this point f2 is finished');
4

0 回答 0