0

所以我最近听到了很多关于 node.js 的消息。支持者似乎吹捧它是基督的第二次降临。这激起了我的兴趣,我决定阅读它。

我遇到了多个具有基准数字的来源,它显然在处理大量并发请求方面做得很好。但是编写代码的“回调”方式对我来说感觉非常“不自然”。一点点研究让我找到了 Eventlet,它让我可以在编写看起来非常像同步的代码时执行异步操作(因此让我更有效率)。

但是 Node.js 似乎比 Eventlet 强大得多(http://codescience.wordpress.com/2011/09/05/non-blocking-io-node-js-and-pythons-eventlet)。我假设这是因为 V8 JS 引擎。是否有 Java/Javascript 产品允许我在编写同步代码的同时执行异步操作,从而为我提供两全其美的优势 - 开发人员的生产力和 JVM/V8 的性能?

4

3 回答 3

1

Node.js 支持可以支持 async - await 语法,允许您使用同步的代码运行异步操作

看一下这个:

https://github.com/koush/node/wiki/%22async%22-support-in-node.js

于 2012-06-07T19:02:21.990 回答
1

有一些项目旨在将这种风格带入 Node.js。IcedCoffeeScript是CoffeeScript的一个分支,就是一个例子(但需要您编写 CoffeeScript)。另一个是node-fibers

就我个人而言,我一直在尝试使用 IcedCoffeeScript(因为我已经在使用 CoffeeScript)并且它似乎工作得很好(参见我的前后示例),但是调试 CoffeeScript 有点痛苦,尽管下一个版本的 CoffeeScript 应该有源映射支持,有望使这更容易。

于 2012-06-07T21:57:37.290 回答
0

你应该看看我的一个项目,它叫做sharpnr.js。这也使用了 await-async 语法,但它是一个简单的 JavaScript 库,适用于所有浏览器。

该库目前处于测试阶段,但它很稳定,几乎支持所有语句(例如循环、开关、if),并且可以与现有库(如 jQuery)很好地配合使用。

语法几乎与 C# 版本相同:

var getAsync = async(function(url) {
  var result = await; $.get(url);
  $("#test").html(result);
});
getAsync("http://www.sharpnrjs.com");

jsfiddle上的工作示例。

您可以从github下载该库。

于 2012-07-03T17:19:04.490 回答