Ich habe dieses Beispiel aus der Axios AJAX-Bibliothek genommen, aber das gleiche gilt für Promises.all()
.Promises.all wie sicherzustellen, dass alle Versprechen haben, sind verfügbar?
Bisher habe ich gelesen, Sie können Promises.all()
verwenden, um zu überprüfen, ob alle Versprechen aus einer Reihe von Versprechen gelöst worden sind.
Das ist wirklich ordentlich, aber was passiert, wenn Sie ein Versprechen setzen und es verrechnet, bevor das nächste geschoben wurde?
Ich rate mit dem Overhead von meinem durchschnittlichen AJAX-Aufruf von mindestens 50ms der Push wird immer passieren, bevor irgendwelche Ajax-Anfragen, aber nur sagen, dafür genommen gewährt nicht wirklich richtig.
Es gibt zwei Lösungen für diese, die ich denken konnte:
eine Zählung Verwenden Sie beide, um sicherzustellen, (in thise Fall) AJAX-Anforderungen sind in der
Array.Überprüfen Sie, ob die tatsächlichen Funktionsnamen vorhanden sind.
Wie sind andere Umgang mit diesem oder sind die meisten Menschen einfach zufrieden mit der Hoffnung auf beiden AJAX Anfragen geschoben wird, bevor ein einzelner kann man schnell genug gelöst werden.
axios.all([getUserAccount(), getUserPermissions()])
.then(axios.spread(function (acct, perms) {
// Both requests are now complete
}));
Es ist nicht sehr klar, was Sie fragen. Entwickeln Sie dynamisch die Palette der Versprechen? Oder wundern Sie sich, ob die Anfragen irgendwie enden, bevor sie verpackt sind? – Nit
Ja, diese Versprechen werden von mehreren Orten aus gedrängt. Nehmen wir an, ein einzelnes Versprechen wurde gedrängt, während ich zwei Versprechen erwarten würde, dann könnte theoretisch dieses eine Versprechen einen dann auslösen, bevor der zweite gedrängt wurde? Wenn das der Fall ist, muss es einen Mechanismus geben, um dies vorher zu prüfen, nein? –
Sie benötigen keinen Mechanismus, um dies vorher zu überprüfen. 'Promise.all' macht aus einer Reihe von Versprechen ein Versprechen. Wie meinst du, sie werden von verschiedenen Orten geschoben –