CommonJS 使用同步的 require()
语句,但如果你有一个像这样的模块怎么办:
function asyncFunction() {
var promise = ...;
return promise;
}
module.exports = asyncFunction();
这里会出现什么样的问题?您是否应该始终为
module.exports
对象返回同步代码?例如,如果 module.exports = {}
它将始终是同步的,但在上述情况下 module.exports 是一个 promise ,假设它不被认为是同步的。如果您需要导入一个本质上是异步的模块,是否有充分的理由在服务器端使用 requireJS? 最佳答案
这违反了 CommonJS 约定,并且会让开发人员感到惊讶。它表明您没有区分代码和数据。服务器上 Node 中的代码可以并且应该同步加载。数据可以并且应该使用 promise 、回调等。
不是我见过的。就个人而言,requireJS 很糟糕,如果你的模块引入了它,我绝对没有机会在我的 Node 项目中使用它。
您需要提供具体信息。我从未见过“天生异步”的 Node 模块,至少不是那些了解代码和数据之间差异并意识到将远程代码动态加载到正在运行的 node.js 服务器应用程序中的人是大多数部署想要的避免有充分的理由,包括可靠性和安全性。
关于node.js - CommonJS 是同步的,但如果调用异步函数会发生什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29884893/