我正在开发一个预处理较少,手写笔等的库。预处理器本质上可以是异步和同步。因为结果只会在构建阶段使用,所以在这里编写阻塞代码不是问题。
因为大多数预处理器是同步的,并且库需要链中的同步函数,所以我想知道是否可以将预处理器函数包装在同步函数中,该函数可以处理来自预处理函数的同步和异步结果?
基本上可以做某事吗?
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
}
答案 0 :(得分:0)
抱歉,这是不可能的。每当代码块运行没有可以在其间运行,即NodeJS中没有真正的并行性。无论你做什么:res = contents
行只能在syncFn
完成任何操作后触发,即在所有同步操作完成代码块中的作业之后。
这迫使NodeJS程序员使用回调模式,例如:
syncFn = function(contents, callback) {
syncOrAsyncFn(contents, function(err, contents) {
callback(contents);
})
}