跳转至

异步请求#

多重异步请求#

// 获取任务信息
    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);
          });
      });
    }