ROM*_*eer 3 javascript asynchronous xmlhttprequest simultaneous angularjs
如何在AngularJS中创建2个同时发生的异步请求,其中一个操作必须在第一个请求之后完成?
我想做这样的事情:
以下方法:
$q.all({
x: $http.get('http://resourceX'),
y: $http.get('http://resourceY')
}).then(function(results) {
$scope.a = f(results.x.data); // where to place this line ?
$scope.z = g(results.x.data, results.y.data);
});
Run Code Online (Sandbox Code Playgroud)
效率不高,因为即使收到resourceX,它也在等待resourceY.
我想在x可用时调用函数f,并在x和y可用时调用函数g.
我想要的伪代码如下所示:
$q.all({
x: $http.get('http://resourceX'),
y: $http.get('http://resourceY')
}).when(x is ready) {
$scope.a = f(results.x.data);
}).then(function(results) {
$scope.z = g(results.x.data, results.y.data);
});
Run Code Online (Sandbox Code Playgroud)
所以,我希望在$ q.all方法和.之间有性能组合
$http.get('http://resourceX').success(function(x) {
$scope.a = f(x);
$http.get('http://resourceY').succes(function(y){
$scope.z = g(x, y);
});
});
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式分离呼叫:
var promiseX = $http.get('http://resourceX');
var promiseY = $http.get('http://resourceY');
promiseX.then(function(result {
$scope.a = f(result.data);
});
$q.all({
x: promiseX,
y: promiseY
}).then(function(results) {
$scope.z = g(results.x.data, results.y.data);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1138 次 |
| 最近记录: |