node.js';s";“坏的”;包装?

node.js';s";“坏的”;包装?,node.js,asynchronous,Node.js,Asynchronous,我正在着手node.js及其有价值的NPM服务。我试着安装这个包,通过阅读文档,它说要生成一个短id,需要以下代码: shortId.generate(); 这意味着要使用ID,我需要这样的东西 var id = shortId.generate(); res.end(id); 我希望我在这里没有犯错误,但我认为异步处理事情的正确方法是使用回调?然后做一些类似的事情: shortId.generate(function(val){ res.end(val); }); 谁能帮我澄清一下这

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

shortId.generate();
这意味着要使用ID,我需要这样的东西

var id = shortId.generate();
res.end(id);
我希望我在这里没有犯错误,但我认为异步处理事情的正确方法是使用回调?然后做一些类似的事情:

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

谁能帮我澄清一下这个问题吗?提前感谢。

是的,示例中的代码是同步的。Node.JS的优势在于它的异步代码,但并非所有东西都是异步的


通常,异步代码用于阻塞IO。

从该模块中可以看出,它在生成id时根本不执行任何i/o


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

shortId.generate函数处于阻塞状态,因此它不会为结果提供回调

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

但是回调确实很常见!例如,您的web应用程序希望将对象保存到服务器。您可以通过向save函数添加回调来实现非阻塞,这样您可以在对象写入磁盘/缓存之前返回响应

我建议阅读一些关于阻塞与非阻塞的好例子。:)