需要来自一个异步API调用的数据才能生成更多内容,如何在Angular中构建嵌入式承诺?

时间:2016-06-29 15:14:37

标签: javascript angularjs api asynchronous

  

问题

我有5个工作队列,每个队列有5个任务。

首先,我进行API调用以获取所有工作队列。然后,我将每个队列中的ID发送到另一个端点,该端点为我获取该队列的任务。

我试图将所有队列中的所有任务推送到一个阵列中,因此理想情况下,最终产品将是25个任务的数组。

由于Angular的异步性质,我无法在合适的时间将所有数据放到正确的位置。

  

我当前的代码

var getAllTasks = function () {
  var deferred = $q.defer();
  var allTasks = [];

  qSrv.getQueues().then(function (response) {

    // Loop through all queues

    response.data.forEach(function (e, i) {

      // Get Queue task list by passing in Global Unique Identifier to endpoint

      qSrv.getQueueByQueueGuid(e.workQueueGuid).then(function (queue) {

        // Push all tasks within task list to one array

        queue.data.taskList.forEach(function (ee, ii) {
          ee.queueName = e.name;
          allTasks.push(ee);
        });
      });
    });

    // Resolve promise with arrays of all 25 tasks

    deferred.resolve(allTasks);
  })

  return deferred.promise;
}
  

结论

我知道,在传递到下一步之前未完成的承诺会有一些时髦的事情,但我不知道如何构建它以避免这个问题。

感谢您的所有帮助,谢谢。

0 个答案:

没有答案