node.js的“坏”包?

时间:2013-08-11 15:26:31

标签: node.js asynchronous

我正在接受node.js及其NPM有价值的服务。我尝试安装this包,并且通过阅读文档,它说要生成一个短ID,这段代码需要:

shortId.generate();

这意味着要使用ID,我需要这样的东西。

var id = shortId.generate();
res.end(id);

我希望我在这里不犯错,但我认为异步做事的正确方法是使用回调?做一些像:

shortId.generate(function(val){
  res.end(val);
});

任何人都可以帮我澄清一下这个问题吗?提前谢谢。

3 个答案:

答案 0 :(得分:1)

是的,您示例中的代码是同步的。 Node.JS具有异步代码的优势,但并非绝对一切都是异步的。

大多数情况下,异步代码可用于阻止IO。

答案 1 :(得分:1)

正如您从该模块source code所看到的那样,它在生成id时根本不执行任何i / o。

当i / o发生时,会使用节点中的回调,因此程序不会等到执行操作,并在i / o完成时调用函数。

答案 2 :(得分:0)

shortId.generate函数正在阻塞,因此它不会为结果提供回调。

在这种情况下这是有道理的,因为唯一ID生成不是繁重的操作。如果是,您可以调整代码以启用回调方法。

回调绝对是常见的!例如,您的Web应用程序想要将对象保存到服务器。通过向save函数添加回调,可以在此处进行非阻塞,因此您可以比将对象写入磁盘/缓存更早地返回响应。

我建议您阅读art of node,了解阻止与非阻止的一些很好的示例。 :)