异步请求
多重异步请求
// 获取任务信息
function getTaskInfo(project_id, task_id){
return new Promise((resolve, reject) => {
$.getJSON(`/api/projects/${project_id}/tasks/${task_id}/dsm/tiles.json`)
.done(res => {
resolve(res);
})
.fail(err => {
reject(err);
})
})
}
function getTaskCenters(){
return new Promise((resolve, reject) => {
$.getJSON(`/api/projects/`)
.done(res => {
let taskCenters = [];
let taskPromiseList = [];
for (let project of res) {
for (let task of project.tasks) {
let taskPromise = getTaskInfo(project.id, task).then(info => {
// 提取中心点
taskCenters.push(
[(info.bounds[0]+info.bounds[2])/2,
(info.bounds[1]+info.bounds[3])/2]
);
});
// 将任务添加到Promise列表
taskPromiseList.push(taskPromise);
}
}
// 所有Promise执行完毕后返回结果
Promise.allSettled(taskPromiseList).then(() => {
resolve(taskCenters);
});
})
.fail(err => {
reject(err);
});
});
}