我必须依次执行三个不同的 $http
调用,它们相互依赖。到目前为止,我的工作解决方案是这样的:
$http.get(".../1/...").success(function() {
$http.get(".../2/...").success(function() {
$http.get(".../3/...").success(function() {
});
});
});
现在需要做一些更改:如果条件为真,则应跳过第一个调用。我可以这样做:
if (skipCallOne) {
$http.get(".../2/...").success(function() {
$http.get(".../3/...").success(function() {
});
});
}
else {
$http.get(".../1/...").success(function() {
$http.get(".../2/...").success(function() {
$http.get(".../3/...").success(function() {
});
});
});
}
这显然会导致大量代码复制。如果我对特定的 $http
调用使用适当的函数,我发现这可以减少。但据我所知,更好的解决方案是使用 $http
-promises 并正确链接它们,如下所示:
$http.get(".../1/...").then(function() {
return $http.get(".../2/...");
}).then(function() {
return $http.get(".../3/...");
}).then(function() {
});
但现在我的问题是,如何有条件地跳过代码复制最少的第一次调用?
最佳答案
你可以试试这个方法:
$q.when(skipCallOne || $http.get(".../1/..."))
.then(function() {
return $http.get(".../2/...");
}).then(function() {
return $http.get(".../3/...");
}).then(function() {
});
关于javascript - 在 AngularJS 中使用 Promises 的 $http 调用的条件链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30056693/