是否可以在node.js中的同步函数内处理异步和同步函数结果?

时间:2013-04-05 08:03:21

标签: javascript node.js asynchronous

我正在开发一个预处理较少,手写笔等的库。预处理器本质上可以是异步和同步。因为结果只会在构建阶段使用,所以在这里编写阻塞代码不是问题。

因为大多数预处理器是同步的,并且库需要链中的同步函数,所以我想知道是否可以将预处理器函数包装在同步函数中,该函数可以处理来自预处理函数的同步和异步结果?

基本上可以做某事吗?

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
}

1 个答案:

答案 0 :(得分:0)

抱歉,这是不可能的。每当代码块运行没有可以在其间运行,即NodeJS中没有真正的并行性。无论你做什么:res = contents行只能在syncFn完成任何操作后触发,即在所有同步操作完成代码块中的作业之后。

这迫使NodeJS程序员使用回调模式,例如:

syncFn = function(contents, callback) {
  syncOrAsyncFn(contents, function(err, contents) {
    callback(contents);
  })
}