Javascript 是否可以在node.js中的同步函数中同时处理异步和同步函数结果?
我正在开发一个库,它可以预处理较少的文件、手写笔等。预处理器本质上可以是异步的,也可以是同步的。因为结果将只在构建阶段使用,所以在这里编写阻塞代码不是问题 因为大多数预处理器都是同步的,而且库需要同步函数,所以我想知道是否有可能将预处理器函数封装在一个同步函数中,该函数可以处理预处理函数的同步和异步结果 基本上,有可能以某种方式做这样的事情吗Javascript 是否可以在node.js中的同步函数中同时处理异步和同步函数结果?,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,我正在开发一个库,它可以预处理较少的文件、手写笔等。预处理器本质上可以是异步的,也可以是同步的。因为结果将只在构建阶段使用,所以在这里编写阻塞代码不是问题 因为大多数预处理器都是同步的,而且库需要同步函数,所以我想知道是否有可能将预处理器函数封装在一个同步函数中,该函数可以处理预处理函数的同步和异步结果 基本上,有可能以某种方式做这样的事情吗 syncFn = function(contents) { var res = syncOrAsyncFn(contents, function(er
syncFn = function(contents) {
var res = syncOrAsyncFn(contents, function(err, contents) {
res = contents
})
// .. do some magic here that waits for the results of syncOrAsyncFn
return res; // Return the result from a function that could be async or sync
}
对不起,那是不可能的。每当一个代码块运行时,中间就没有任何东西可以运行,即nodej中没有真正的并行性。因此,无论您做什么:
res=contents
行只能在syncFn
完成它所做的任何事情后,即在所有同步操作完成一个代码块中的作业后才能触发
这迫使NodeJS程序员使用回调模式,例如:
syncFn = function(contents, callback) {
syncOrAsyncFn(contents, function(err, contents) {
callback(contents);
})
}