【发布时间】:2017-07-11 08:28:39
【问题描述】:
使用 Meteor 和 AngularJS,我有以下设置:
ctrl.js
for(var i = 0; i < result.length; i++){
Meteor.call('serverMethod', arg1, arg2, function(err, res){
console.log(res);
});
}
methods.js
'serverMethod' (arg1, arg2) {
return HTTP.call("GET", "http://example.com/foo/var");
}
目标是,对于结果中的每个元素,它将调用服务器上的 Meteor 方法,该方法将发出 HTTP GET 请求,返回一些数据,然后记录该数据。
这一切都有效,但是它一次只做一个(发出请求,等待结果,发出下一个请求)。我以为这一切都会异步运行?
我在这里错过了什么/我可以改进什么?
【问题讨论】:
-
只是为了在下面对 Derrick 的回答添加一些解释:您期望它在一般意义上异步运行是正确的,但是 Meteor 在服务器上排队订阅和方法调用并按顺序处理它们,因此客户端上的方法回调将以相同的顺序调用,即使它们在技术上是异步代码。