0

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

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

基本上有可能以某种方式做这样的事情吗?

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
}
4

1 回答 1

0

对不起,那是不可能的。每当一个代码块运行时,中间就不能运行任何东西,也就是说,NodeJS 中没有真正的并行性。因此,无论你做什么:res = contentsline 只能在syncFn完成它所做的一切之后触发,即在所有同步操作完成代码块中的工作之后。

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

syncFn = function(contents, callback) {
  syncOrAsyncFn(contents, function(err, contents) {
    callback(contents);
  })
}
于 2013-04-05T08:29:36.483 回答