Вопрос
Я не могу понять, как заставить Dojo Deferred работать для следующего сценария.В основном у меня есть функция, которая должна перебирать несколько элементов и обрабатывать каждый элемент отдельно отложенным образом.Он обрабатывает каждый элемент в отдельном методе, который по завершении возвращает Deferred.Я хочу иметь возможность запускать цикл, обрабатывать каждый элемент и сообщать об успехе или неудаче, когда это будет сделано.Вот что я получил в качестве тестового образца:
http://jsfiddle.net/Ayyoudy/mgv6Y/12/
Что я делаю не так?Я ожидаю, что выходные числа будут последовательными, но это не так.
Я также хочу иметь возможность определять, есть ли ошибка при обработке одного из элементов, и если да, не обрабатывать остальные.
Спасибо
Решение
-
Я решил, что выходные числа должны быть последовательными. http://jsfiddle.net/granjoy/mgv6Y/17/ В вашем коде есть пара проблем
- функция цикла должна использовать закрытие для хранения переменной.
- Вы должны использовать проверку, возвращенную Deferred, теперь процесс Deferred
-
Учитывая, что функция process () завершится немедленно, журнал «все обработал!»будет первым выводом.
Изменить:
Я извлек урок из вопроса.Спасибо, автор дает еще одно хорошее решение. http://jsfiddle.net/Ayyoudy/mgv6Y/14