编写/转换流星同步功能

时间:2013-10-27 09:58:08

标签: asynchronous meteor sync node-fibers

这让我困扰了一段时间,所以我想我只是快速做一个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作为结果,因为结果是回调。

1 个答案:

答案 0 :(得分:7)

有一个名为Meteor.wrapAsync的函数(未记录)。

只需将功能包起来

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

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

现在,您将在result的{​​{1}}中获得此结果。您可以转换任何具有回调的异步函数,其中第一个参数是错误,第二个参数是结果。