Wenn ich mich richtig erinnere, akzeptiert jQuery .when()
Methode keine Array Versprechen als Argument, sondern einzelne Argumente statt. Das bedeutet nur, Sie müssen die Art und Weise ändern, davon Aufruf:
$.when.apply(null, promises).then(function(){
window.location.href = '/cart?edit_order=true'
})
Function.prototype.apply
Verwendung automatisch eine Array nehmen und jeden Wert setzt diesen Array als einzelne Argumente in die aufgerufene Funktion, in diesem Fall , .when()
. Effektive Verbreitung der Argumente.
Sie können auch einige ECMAScript Magie tun und ein wenig teilweise Anwendung für das Erstellen:
var when = Function.prototype.apply.bind($.when, null);
..und dann rufen Sie einfach
when(promises).then(function() { ...
ich sah, dass Sie jQuery im Titel angegeben, aber nur für historische Zwecke, können Sie dies auf eine "bessere" Art und Weise tun und mit besser ich meine bessere Lesbarkeit und Erweiterbarkeit. 'q.all ([loadSomething(), loadAnotherThing()]) .spread (function (etwas, ein anderer) { DoSomethingOnThem (etwas, ein anderer); });' Wo 'loadSomething(), loadAnotherThing() 'sind zwei Versprechen und' q.all' ist aus der folgenden Versprechens-Bibliothek: https://github.com/kriskowal/q –