【发布时间】:2016-09-10 14:06:49
【问题描述】:
有没有办法让 Node.js 流作为协程。
示例 斐波那契数字流。
fibonacci.on('data', cb);
//The callback (cb) is like
function cb(data)
{
//something done with data here ...
}
期待
function* fibonacciGenerator()
{
fibonacci.on('data', cb);
//Don't know what has to be done further...
};
var fibGen = fibonacciGenerator();
fibGen.next().value(cb);
fibGen.next().value(cb);
fibGen.next().value(cb);
.
.
.
从生成器中获取所需的数字。这里的斐波那契数列只是一个例子,实际上流可以是任何文件、mongodb 查询结果等。
也许是这样的
- 将“stream.on”函数设为生成器。
- 将 yield 放在回调函数中。
- 获取生成器对象。
- 调用 next 并获取流中的下一个值。
如果是的话,至少有可能吗?如果不是,为什么?也许是一个愚蠢的问题:)
【问题讨论】:
-
嗯,不。你不能这样做。您必须等到 async/await 标准化。
-
在python中是可能的...
def sgen(filename): f = open(filename,'r') for l in f: yield f.readline() g = sgen('/home/datadumpfile.xml') print(next(g)) print(next(g)) print(next(g))
标签: node.js generator coroutine