Node.js与Python的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.js,既可以用于webapp开发,也可以用于小型系统srcripts。对于Python,我们有一个实现greenlets和monkey patch Python STD库的库gevent,所以您可以编写同步代码,在异步的情况下它也可以工作


除了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!");
});