我正在尝试学习Node.js,既用于webapp开发,也用于小系统脚本。使用Python,我们有这个库gevent实现了greenlets和猴子补丁Python STD库,所以你可以编写同步代码,它可以像异步一样工作。
是否有类似的东西,但对于Node?我已经阅读过async和Fibers,但我不明白这是否是类似的方法。
答案 0 :(得分:0)
通过查看gevent文档中的第一个示例,您正在寻找generators
,这是一个前沿功能。您可以通过在支持节点版本中传递--harmony_generators
来使用它们(目前不稳定的0.11)。
使用本机生成器并不难,但我建议使用co module。自述文件中的一个例子:
co(function *(){
var a = get('http://google.com'); // an async process
var b = get('http://yahoo.com'); // an async process
var c = get('http://cloudup.com'); // an async process
var res = yield [a, b, c]; // wait until these are done in a
// synchronous style.
console.log(res); // log these objects
})()
其他更传统的选择是使用promises(存在多个库):
doSomeTaskThatReturnsAPromise()
.then(somethingElse)
.then(somethingElse)
.then(function() { console.log("I'm done!") });
..或诸如async之类的库:
async.series([
doSomeTask,
somethingElse,
somethingElse
], function() {
console.log("I'm done!");
});
我对Fibers没有经验,但我相信它在概念上类似于Generators。