gpt4 book ai didi

javascript - AngularJS中包含内部操作的同时异步请求

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:33:37 27 4
gpt4 key购买 nike

如何在 AngularJS 中创建2 个同步异步请求,其中有一个操作必须在第一个请求之后完成?

我想做这样的事情:

  • 调用第一个网络服务(接收 x)
  • 调用第二个网络服务(接收 y)
  • 在收到第一个 Web 服务 ( f(x) ) 的响应后做一些事情
  • 在我拥有两个数据 ( g(x,y) ) 之后做一些事情

以下方法:

 $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);
});

效率不高,因为即使收到 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);
});

所以,我想在 $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);
});
});

最佳答案

您可以这样分隔调用:

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);
});

关于javascript - AngularJS中包含内部操作的同时异步请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25077967/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com