我正在努力学习Node.js,这既适用于webapp开发,也适用于小型系统脚本。有了Python,我们就有了这个库gevent,它实现了greenlets和猴补丁Python库,因此您可以编写同步代码,它将在异步的地方工作。
除了Node,还有这样的事情吗?我读过关于异步和光纤的文章,但我不明白这是否是一种类似的方法。
发布于 2014-05-13 14:57:44
通过查看gevent文档中的第一个示例,您将看到generators
,这是一个非常重要的特性。您可以通过在支持节点版本(目前是不稳定的0.11)中传递--harmony_generators
来使用它们。
使用本地生成器并不难,但我建议使用co模块。一个来自其自述的例子:
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
})()
其他更传统的选择是使用承诺(存在多个库):
doSomeTaskThatReturnsAPromise()
.then(somethingElse)
.then(somethingElse)
.then(function() { console.log("I'm done!") });
..or库(如异步 )
async.series([
doSomeTask,
somethingElse,
somethingElse
], function() {
console.log("I'm done!");
});
我对光纤没有经验,但我相信它在概念上类似于发电机。
https://stackoverflow.com/questions/23633765
复制相似问题