Вопрос

Я не могу понять, как заставить Dojo Deferred работать для следующего сценария.В основном у меня есть функция, которая должна перебирать несколько элементов и обрабатывать каждый элемент отдельно отложенным образом.Он обрабатывает каждый элемент в отдельном методе, который по завершении возвращает Deferred.Я хочу иметь возможность запускать цикл, обрабатывать каждый элемент и сообщать об успехе или неудаче, когда это будет сделано.Вот что я получил в качестве тестового образца:

http://jsfiddle.net/Ayyoudy/mgv6Y/12/

Что я делаю не так?Я ожидаю, что выходные числа будут последовательными, но это не так.

Я также хочу иметь возможность определять, есть ли ошибка при обработке одного из элементов, и если да, не обрабатывать остальные.

Спасибо

Это было полезно?

Решение

  1. Я решил, что выходные числа должны быть последовательными. http://jsfiddle.net/granjoy/mgv6Y/17/ В вашем коде есть пара проблем

    • функция цикла должна использовать закрытие для хранения переменной.
    • Вы должны использовать проверку, возвращенную Deferred, теперь процесс Deferred
  2. Учитывая, что функция process () завершится немедленно, журнал «все обработал!»будет первым выводом.

Изменить:

Я извлек урок из вопроса.Спасибо, автор дает еще одно хорошее решение. http://jsfiddle.net/Ayyoudy/mgv6Y/14

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top