问题
我有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;
}
结论
我知道,在传递到下一步之前未完成的承诺会有一些时髦的事情,但我不知道如何构建它以避免这个问题。
感谢您的所有帮助,谢谢。