5

这一直困扰着我一段时间,所以我想我只需对其进行快速 QA:

如果一个人有一个普通的 nodeJS 模块或其他东西,并且它在服务器端有一个异步功能。我如何使它同步。例如,我如何将 nodejsfs.stat异步函数转换为同步函数。

例如我有

服务器端js

Meteor.methods({
    getStat:function() {
        fs.stat('/tmp/hello', function (err, result) {
            if (err) throw err;
            console.log(result)
        });
    }
});

如果我从客户端调用它,我会返回undefined结果,因为结果在回调中。

4

1 回答 1

7

有一个名为Meteor.wrapAsync.

简单地包装函数

Meteor.methods({
    getStat:function() {
        var getStat = Meteor._wrapAsync(fs.stat);

        return getStat('/tmp/hello');
    }
});

现在,您将resultMeteor.call. 您可以转换任何具有回调的异步函数,其中第一个参数是错误,第二个参数是结果。

于 2013-10-27T09:58:07.823 回答