等待所有 $http.get 完成
Waiting for all $http.get to finish
我对此有点困惑。我在一个函数中有两个 get 调用。一旦这个完整的函数,即两个 get 调用完成,只有到那时这个函数才能完成它的工作。我应该如何使用 $q 让它按我想要的方式工作?这就是我现在拥有的:
function updateBlackList() {
$http.get("http://127.0.0.1:8000/blacklist/entries/vehicle").then(function (res){
console.log(res)
}).catch(function (err) {
console.log(err)
});
})
$http.get("http://127.0.0.1:8000/blacklist/entries/person").then(function (res){
console.log(res)
}).catch(function (err) {
console.log(err)
});
});
return $q.when();
}
这里是另一个函数,我需要等待上面的函数完成:
BlackListService.updateBlackList().then(function() {
addVersion(server_version).then(function () {
console.log("Blacklist update complete")
})
})
它并没有像我怀疑的那样做。在 tw get 请求完成之前调用黑名单完整控制台
您想将两个承诺合二为一 $q.all()
function updateBlackList() {
return $q.all([
$http.get("http://127.0.0.1:8000/blacklist/entries/vehicle")
.then(function (res){console.log(res)})
.catch(function (err) {console.log(err)}),
$http.get("http://127.0.0.1:8000/blacklist/entries/person")
.then(function (res){console.log(res)})
.catch(function (err) {console.log(err)});
]);
}
此外,对于您的第二个示例,您可以链接承诺以获得更好看的代码:
BlackListService.updateBlackList()
.then(function() {
return addVersion(server_version);
})
.then(function () {
console.log("Blacklist update complete");
})
使用$q.all
.
var VEHICLE_URL = "http://127.0.0.1:8000/blacklist/entries/vehicle";
var PERSON_URL = "http://127.0.0.1:8000/blacklist/entries/person";
function updateBlackList() {
var p1 = $http.get(VEHICLE_URL).then(whatever);
var p2 = $http.get(PERSON_URL).then(whatever);
return $q.all([p1, p2]);
}
updateBlackList()
.then(whateverElse);
我对此有点困惑。我在一个函数中有两个 get 调用。一旦这个完整的函数,即两个 get 调用完成,只有到那时这个函数才能完成它的工作。我应该如何使用 $q 让它按我想要的方式工作?这就是我现在拥有的:
function updateBlackList() {
$http.get("http://127.0.0.1:8000/blacklist/entries/vehicle").then(function (res){
console.log(res)
}).catch(function (err) {
console.log(err)
});
})
$http.get("http://127.0.0.1:8000/blacklist/entries/person").then(function (res){
console.log(res)
}).catch(function (err) {
console.log(err)
});
});
return $q.when();
}
这里是另一个函数,我需要等待上面的函数完成:
BlackListService.updateBlackList().then(function() {
addVersion(server_version).then(function () {
console.log("Blacklist update complete")
})
})
它并没有像我怀疑的那样做。在 tw get 请求完成之前调用黑名单完整控制台
您想将两个承诺合二为一 $q.all()
function updateBlackList() {
return $q.all([
$http.get("http://127.0.0.1:8000/blacklist/entries/vehicle")
.then(function (res){console.log(res)})
.catch(function (err) {console.log(err)}),
$http.get("http://127.0.0.1:8000/blacklist/entries/person")
.then(function (res){console.log(res)})
.catch(function (err) {console.log(err)});
]);
}
此外,对于您的第二个示例,您可以链接承诺以获得更好看的代码:
BlackListService.updateBlackList()
.then(function() {
return addVersion(server_version);
})
.then(function () {
console.log("Blacklist update complete");
})
使用$q.all
.
var VEHICLE_URL = "http://127.0.0.1:8000/blacklist/entries/vehicle";
var PERSON_URL = "http://127.0.0.1:8000/blacklist/entries/person";
function updateBlackList() {
var p1 = $http.get(VEHICLE_URL).then(whatever);
var p2 = $http.get(PERSON_URL).then(whatever);
return $q.all([p1, p2]);
}
updateBlackList()
.then(whateverElse);