Node.js与Python的gevent是什么等价物?
我正在尝试学习Node.js,既可以用于webapp开发,也可以用于小型系统srcripts。对于Python,我们有一个实现greenlets和monkey patch Python STD库的库gevent,所以您可以编写同步代码,在异步的情况下它也可以工作Node.js与Python的gevent是什么等价物?,node.js,Node.js,我正在尝试学习Node.js,既可以用于webapp开发,也可以用于小型系统srcripts。对于Python,我们有一个实现greenlets和monkey patch Python STD库的库gevent,所以您可以编写同步代码,在异步的情况下它也可以工作 除了Node,还有类似的东西吗?我读过异步和光纤,但我不明白这是否是类似的方法 通过查看gevent文档中的第一个示例,您正在寻找生成器,这是一个前沿功能。您可以通过在支持当前不稳定的0.11的节点版本中传递-harmony_生成器来使
除了Node,还有类似的东西吗?我读过异步和光纤,但我不明白这是否是类似的方法 通过查看gevent文档中的第一个示例,您正在寻找生成器,这是一个前沿功能。您可以通过在支持当前不稳定的0.11的节点版本中传递-harmony_生成器来使用它们 使用本机生成器并不难,但我建议使用。自述文件中的一个示例:
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!") });
…或图书馆,如:
我没有纤维方面的经验,但我相信它在概念上类似于生成器。nodejs在设计上是异步的,默认情况下也是异步的。因此,不需要修补任何东西,因为所有库的编写都考虑了异步编程。没有需要修补的同步库。您必须异步编写代码。nodejs/javascript是设计回调的。问题是,在python中,从twisted到gevent,有一种技术可以从按设计回调到按设计异步。gevent不使用生成器——它使用greenlet模块进行python堆栈保存/还原,从而实现协同路由。这与python生成器不同-不涉及产量。这是使用生成器的解决方案示例:。请注意到处都是yield关键字。Gevent用greenlet解决了这个问题。
async.series([
doSomeTask,
somethingElse,
somethingElse
], function() {
console.log("I'm done!");
});