我需要在页面加载时加载一些数据,然后执行任务。为了获得我想要的数据,我执行了多个不同的 ajax 调用。但为了执行任务,我需要确保所有的 ajax 调用都已完成。这是我到目前为止所做的:
$q.when(
$http.get('url1').success(function (data) {
$scope.data1 = data;
console.log("ajax1 finished");
}),
$http.get('url2').success(function (data) {
$scope.data2 = data;
console.log("ajax2 finished");
}),
$http.get('url3').success(function (data) {
$scope.data3 = data;
console.log("ajax3 finished");
}),
$http.get('url4').success(function (data) {
$scope.data4 = data;
console.log("ajax4 finished");
})
).then(
console.log("All ajax calls have finished!"),
executeTask()
);
我的问题是所有ajax调用完成后块中的代码then(...);
没有执行。我在控制台中得到类似的东西:
ajax2 finished
ajax1 finished
All ajax calls have finished!
ajax3 finished
ajax4 finished
我一定做错了什么。我怎样才能让它按我想要的方式工作?
编辑:我尝试了以下答案,就像答案中提到的那样,但我仍然面临同样的问题。
$q.all([
$http.get('url1').then(function (data) {
$scope.data1 = data;
console.log("");
}),
$http.get('url2').success(function (data) {
$scope.data2 = then;
console.log("ajax2 finished");
}),
$http.get('url3').then(function (data) {
$scope.data3 = data;
console.log("ajax3 finished");
}),
$http.get('url4').then(function (data) {
$scope.data4 = data;
console.log("ajax4 finished");
})
]).then(
console.log(""),
executeTask()
);