这让我困扰了一段时间,所以我想我只是快速做一个QA:
如果有一个普通的nodeJS模块或者其他东西,它在服务器端有一个异步功能。如何使其同步。例如,我如何将nodejs fs.stat
异步函数转换为同步函数。
例如我有
服务器端js
Meteor.methods({
getStat:function() {
fs.stat('/tmp/hello', function (err, result) {
if (err) throw err;
console.log(result)
});
}
});
如果我从客户端调用它,我会返回undefined
作为结果,因为结果是回调。
答案 0 :(得分:7)
有一个名为Meteor.wrapAsync
的函数(未记录)。
只需将功能包起来
Meteor.methods({
getStat:function() {
var getStat = Meteor._wrapAsync(fs.stat);
return getStat('/tmp/hello');
}
});
现在,您将在result
的{{1}}中获得此结果。您可以转换任何具有回调的异步函数,其中第一个参数是错误,第二个参数是结果。