我正在接受node.js及其NPM有价值的服务。我尝试安装this包,并且通过阅读文档,它说要生成一个短ID,这段代码需要:
shortId.generate();
这意味着要使用ID,我需要这样的东西。
var id = shortId.generate();
res.end(id);
我希望我在这里不犯错,但我认为异步做事的正确方法是使用回调?做一些像:
shortId.generate(function(val){
res.end(val);
});
任何人都可以帮我澄清一下这个问题吗?提前谢谢。
答案 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,了解阻止与非阻止的一些很好的示例。 :)