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