Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在node.js中的同步函数中同时处理异步和同步函数结果?_Javascript_Node.js_Asynchronous - Fatal编程技术网

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);
  })
}