0

我正在着手使用 node.js 及其 NPM 有价值的服务。我尝试安装这个包,通过阅读文档,它说要生成一个短 id,需要这段代码:

shortId.generate();

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

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

我希望我在这里没有犯错,但我认为异步做事的正确方法是使用回调?并执行以下操作:

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

谁能帮我澄清这个问题?提前致谢。

4

3 回答 3

1

是的,您示例中的代码是同步的。Node.JS 具有异步代码的优势,但并非所有内容都是异步的。

大多数情况下,异步代码对于阻塞 IO 很有用。

于 2013-08-11T15:31:23.030 回答
1

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

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

于 2013-08-11T15:31:38.000 回答
0

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

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

回调肯定很常见!例如,您的 Web 应用程序想要将一个对象保存到服务器。通过向保存函数添加回调,您可以在此处实现非阻塞,因此您可以在对象写入磁盘/缓存之前更快地返回响应。

我建议阅读节点艺术,了解阻塞与非阻塞的一些很好的例子。:)

于 2013-08-11T15:31:56.467 回答