У меня возникли странные проблемы с синхронизацией с использованием асинхронных вызовов с использованием углового.Проблемы с синхронизацией с угловыми асинхронными вызовами
У меня есть массив идентификаторов:
set = [1,2]
I цикл по этому набору и сделать вызов асинхронной для каждого ID:
promises = []
for id in set
d = $q.defer()
promises.push d.promise
mySvc.asyncGetObject id
.then (results) ->
console.log results, id
# results doesnt correspond with the ID
В .then() блока, когда я ожидал для получения id == 2 объекта, я фактически получаю объект id == 1. Я проследил это тщательно, и это не имеет никакого смысла. Я посмотрел на сетевую панель - HTTP-вызов выполнен правильно. Результаты, которые я получаю от вызова, не совпадают с результатами, которые я получаю в коде.
Что может быть причиной этого? У меня была проблема в прошлом, когда я пытался обновить несколько элементов HTML, и мне пришлось обернуть один или два вызова в setTimeout, иначе они не будут выполняться. Я не знаю, связано ли это, но это расстраивает.
Это пахнет отсроченный антишаблон мне. –
Пожалуйста, объясните. –
stackoverflow.com/questions/23803743/what-is-the-deferred-antipattern-and-how-do-i-avoid-it –