Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous 编写/转换Meteor同步函数_Asynchronous_Meteor_Sync_Node Fibers - Fatal编程技术网

Asynchronous 编写/转换Meteor同步函数

Asynchronous 编写/转换Meteor同步函数,asynchronous,meteor,sync,node-fibers,Asynchronous,Meteor,Sync,Node Fibers,这困扰了我一段时间,所以我想我应该做一个快速的QA: 如果有一个普通的nodeJS模块或者其他什么,并且它在服务器端有一个异步函数。如何使其同步。例如,如何将nodejsfs.stat异步函数转换为同步函数 e、 g我有 服务器端js Meteor.methods({ getStat:function() { fs.stat('/tmp/hello', function (err, result) { if (err) throw err;

这困扰了我一段时间,所以我想我应该做一个快速的QA:

如果有一个普通的nodeJS模块或者其他什么,并且它在服务器端有一个异步函数。如何使其同步。例如,如何将nodejs
fs.stat
异步函数转换为同步函数

e、 g我有

服务器端js

Meteor.methods({
    getStat:function() {
        fs.stat('/tmp/hello', function (err, result) {
            if (err) throw err;
            console.log(result)
        });
    }
});
如果我从客户端调用它,我会返回
未定义的
,作为我的结果,因为结果在回调中。

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

简单地将函数包装起来

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

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

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

@zimt28如果它将抛出错误,而不是通过回调传递错误,您可以使用
try。。捕捉
以检查它们