Node.js NodeJS文件系统同步和性能

Node.js NodeJS文件系统同步和性能,node.js,asynchronous,sync,Node.js,Asynchronous,Sync,我在NodeJS中遇到了一个问题,由于某些中间件的原因,我需要直接返回一个值,该值需要知道文件的最后修改时间。显然,正确的方法是 getFilename: function(filename, next) { fs.stat(filename, function(err, stats) { // Do error checking, etc... next('', filename + '?' + new Date(stats.mtime).getTime

我在NodeJS中遇到了一个问题,由于某些中间件的原因,我需要直接返回一个值,该值需要知道文件的最后修改时间。显然,正确的方法是

getFilename: function(filename, next) {
    fs.stat(filename, function(err, stats) {
        // Do error checking, etc...
        next('', filename + '?' + new Date(stats.mtime).getTime());
    });
}
但是,由于我使用的中间件,getFilename必须返回一个值,因此我将执行以下操作:

getFilename: function(filename) {
    stats = fs.statSync(filename);
    return filename + '?' + new Date(stats.mtime).getTime());
}

我不完全理解NodeJS事件循环的本质,所以我想知道的是statSync中是否有任何特殊的调味品以某种方式推动事件循环(或者在node中调用的任何东西,等待执行的指令堆栈)当filenode信息被加载时,或者它真的被阻塞了,并且这段代码会导致性能噩梦,我应该重写我用来使用回调的中间件吗?如果它确实有特殊的调味汁,允许事件循环在磁盘上等待时继续,那么它在其他任何地方都可用吗(尽管有一些promise库或其他东西)?

不,这里没有魔力。如果你在函数中间阻塞,所有的东西都被阻塞了。
如果性能成为一个问题,我认为您唯一的选择是重写中间件的这一部分,或者对其使用方式进行创新。

奇怪的是,中间件不允许异步执行,因为没有IO,您无法完成任何事情。