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 - Fatal编程技术网

Asynchronous 如何在meteor中使用并行异步

Asynchronous 如何在meteor中使用并行异步,asynchronous,meteor,Asynchronous,Meteor,我有三个函数来获取一个网站的截图、yelp和google数据。这三个函数的结果被推送到一系列子文档中,这些子文档将被插入到数据库中。我需要提高这个api的性能。是否可以在meteor中使用并行异步调用这些函数,而不使用npm模块? 我使用的代码行如下所示 Meteor.methods({ insertApart : function(apart){ var google_data = setGoogleData(apart); var screen_captures_

我有三个函数来获取一个网站的截图、yelp和google数据。这三个函数的结果被推送到一系列子文档中,这些子文档将被插入到数据库中。我需要提高这个api的性能。是否可以在meteor中使用并行异步调用这些函数,而不使用npm模块? 我使用的代码行如下所示

 Meteor.methods({
   insertApart : function(apart){
     var google_data = setGoogleData(apart);
     var screen_captures_data = setScreenShots(apart);
     var yelp_data = setYelpData(apart); 

     function setGoogleData(apart) {
        // code to fetch google data
     }

     function setScreenShots(apart) {
        // code to fetch screen shots
     }

     function setYelpData(apart) {
        // code to fetch yelp data
     }

     var data=[];
     data.google = google_data;// setting google data
     data.screen_captures = screen_captures_data;// setting screen captures
     data.yelp = yelp_data;// setting yelp data
     var id = Apartments.insert(data);
     return id;
  }
});

将每个调用包装在SetTimeout 0块中?或者将代码放入3个meteor方法中,然后使用此.unblock。我不确定这是否有效,但值得一试try@EliezerSteinbock:当我使用setTimeout 0时,我得到一个空数组,它也应该在一个meteor方法中完成。还有其他方法吗?是的。这是有道理的。这就是异步发生的原因。您如何获取google和yelp数据?如果它使用回调,那么您可以并行运行所有3个调用。但是,您必须找到一种方法,在所有3种方法都完成后才插入文档。请使用Meteor.wrapAsync将每个函数包装在自己的光纤中。光纤是一种处理异步函数的流星方式,允许您以同步方式调用函数。@ElizerSteinbock:我在这种方法中不使用任何回调