有没有办法在Node.Js中进行阻塞调用?

时间:2014-02-17 21:09:39

标签: node.js

使用continuation(回调)而不是直接顺序执行模型编程的次数要难得多。 NodeJ可以阻止呼叫吗?

2 个答案:

答案 0 :(得分:2)

是的,它可以。例如,您可以使用fs.readFileSync()而不是fs.readFile()读取文件。每个库通常为同步/阻塞方法提供xxxSync方法。

但是你不应该经常使用同步方法。请记住,Node.js对JavaScript代码使用单个执行线程。如果您阻止此线程,则为每个人阻止它(与C#/ Java不同,其中将为每个请求创建一个新线程。)

如果异步方法对你来说太过分了,你可能想要使用另一个平台(Ruby,Python,PHP)。

答案 1 :(得分:0)

是的,如果是生成器,node.js 0.11.x可以在内部进行阻塞调用。 “阻塞呼叫”是指暂停执行当前功能一段时间。查看co库。

这是阻止呼叫的唯一推荐方法。

除此之外,您可以查看fibers,但需要谨慎使用,而不是在通用库中使用。

之前还提到了几个*同步调用,但除非您正在编写单行内容,否则请完全避免使用它们。