$ .Deferred: как определить, когда каждое обещание было выполнено
У меня есть ряд асинхронных задач, которые необходимо выполнить, поэтому я использую обещания.
Мне нужно определить, когда каждое из обещаний было выполнено (решено и отклонено). Я не должен продолжать казнь до этого момента.
Я использовал что-то вроде этого:
$.when(promise1, promise2, ...).always();
Но этот код неверен, потому чтоwhen
Метод имеет ленивую оценку и возвращается, как только одно из обещаний не выполняется. Так чтоalways
обратный вызов также запускается, как только одно из обещаний не выполняется.
Я думал о кодировании обходного пути, но этот вариант использования настолько распространен, что, возможно, кто-то уже сделал это, или, может быть, есть даже способ сделать это, используя только jQuery (если нет, было бы неплохо добавитьPromise.whenNonLazy
илиPromise.when(promise1, promise2, ..., false)
в будущем.
Это возможно?