gpt4 book ai didi

javascript - Angular 链接 AJAX 调用

转载 作者:行者123 更新时间:2023-11-29 10:40:07 25 4
gpt4 key购买 nike

我必须执行 2 个 AJAX 调用。第二个取决于第一个调用结果。现在我这样做:

Service.getA(car).then(function(carInfo) {
if (carInfo.success) {
Service.getB(carInfo.number).then(function(holderInfo) {
console.log(holderInfo);
});
}
});

服务:

getA: function(car) {
return Server.execute({
method: 'GET',
url: 'a/a',
params: {
car: car
},
}).then(function (carInfo) {
return carInfo;
});
},

getB 方法类似 - 只是另一个 URL 和另一个参数。我正在学习 angular 并且想使用 promises 和 defers 来实现这段代码(谷歌建议代码会更漂亮)。我该怎么做?

最佳答案

你完成它的方式通常是你如何链接 ajax 调用,尽管你可以稍微简化一下:

  Service.getA(car).then(function(carInfo) {
Service.getB(carInfo.number).then(function(holderInfo) {
console.log(holderInfo);
});
});

对于错误,让您的服务器返回 Bad Request 400,然后您可以链接 .error() 回调,而不是根据 success 属性确定成功。

正如 Cerbrus 所指出的,$q.all([promise1, promise2]) 并行执行它们,而不是一个依赖于另一个。

您的 getA 方法应该像这样返回 promise 本身:

 getA: function(car) {
return Server.execute({
method: 'GET',
url: 'a/a',
params: {
car: car
},
});
}

如果您真的需要从服务中绑定(bind)额外的回调,您可以这样做:

 getA: function(car) {
return Server.execute({
method: 'GET',
url: 'a/a',
params: {
car: car
},
}).then(function (carInfo) {
//do something?

}, function () {
//handle error?
});
},

关于javascript - Angular 链接 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30773018/

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