所以我有一个页面同时进行几个ajax调用。每个ajax调用都涉及一个块/ div,其中包含已被重新检索的数据,例如,假设有5个div。在渲染页面时,我希望其中一个主div完全加载并在其他div / blocks之前显示。
实施例。我有一个页面,顶部有一般信息,其他div是主要部分的更多细节。因此,它们应该同时被调用,但我希望通用div首先加载其所有内容,然后才允许在屏幕上显示更具体的div。
我希望所有调用都是异步的,但不知何故会延迟其他调用的外观。这可能吗?
我知道async:false只会在调用ajax调用时延迟,但我需要同时调用它们。
有什么想法吗?拜托,谢谢你。
答案 0 :(得分:0)
你可以使用setTimeout(foo,3000);如果您需要等待特定的时间间隔,那么在该时间间隔之后调用您的函数foo()来执行您想要的操作
答案 1 :(得分:0)
您可以在一般的div Ajax调用成功时放置/调用其他Ajax调用。
答案 2 :(得分:0)
我想我是通过angular制作的,在我的情况下我需要在执行其他进程之前查询所有状态。创建一个结合了所有ajax请求的数组,然后使用$q.all
等效于原生javascript' s Promise.all()
getAllStatusResult() {
let promises = [];
let statusList = ['all','done','ongoing','cancelled'];
let responseList = [];
let date = new Date(), y = date.getFullYear(), m = date.getMonth();
let deferred = $q.defer();
statusList.map(status => {
let payload = {
start_date: "2017-1-1",
end_date: formatDate(date),
filter: { status }
}
promises.push(ReportsService.getRevenues(payload).then((response) => {
responseList.push({ name: status, total:response.data.total});
}));
});
$q.all(promises).then(() => {
deferred.resolve(responseList);
}).then(response => {
return response;
});
return deferred.promise;
}