$ .Deferred: как определить, когда каждое обещание было выполнено

У меня есть ряд асинхронных задач, которые необходимо выполнить, поэтому я использую обещания.

Мне нужно определить, когда каждое из обещаний было выполнено (решено и отклонено). Я не должен продолжать казнь до этого момента.

Я использовал что-то вроде этого:

$.when(promise1, promise2, ...).always();

Но этот код неверен, потому чтоwhen Метод имеет ленивую оценку и возвращается, как только одно из обещаний не выполняется. Так чтоalways обратный вызов также запускается, как только одно из обещаний не выполняется.

Я думал о кодировании обходного пути, но этот вариант использования настолько распространен, что, возможно, кто-то уже сделал это, или, может быть, есть даже способ сделать это, используя только jQuery (если нет, было бы неплохо добавитьPromise.whenNonLazy илиPromise.when(promise1, promise2, ..., false) в будущем.

Это возможно?

Ответы на вопрос(3)

Ваш ответ на вопрос