Ich habe gerade das Konzept von Promise.all() gelernt und bin neugierig auf seinen Mechanismus. Aus meiner begrenzten Kenntnis von Promise übergibt es eine Callback-Funktion in der .then() -Methode und ruft sie in der Definition auf. Zum Beispiel:Wann ist Rückruf von Promise.all() ausgelöst
var p = new Promise((resolve) => {
setTimeout(resolve, 2000);
setTimeout(() => {
console.log('4 sec function');
}, 4000);
});
p.then(() => {
console.log('2 sec function');
});
// result:
// 2 sec function
// 4 sec function
Wenn wir jedoch Promise.all()
verwenden, löst es der Rückruf, wenn alle Versprechen erfüllt. Wie ich vermute, löst es den Rückruf im Versprechen aus, das zuletzt erfüllt wird. Im folgenden Fall wäre meine Sichtweise des Ergebnisses "vier". Es druckt jedoch ein Array der vier Zahlen. Warum passiert das? Genauer gesagt:
Wie oft wird der Callback tatsächlich ausgelöst?
an welcher Position in der Verheißungsdefinition wird der Callback ausgelöst?
Welcher Wert wird an den Callback übergeben?
Hier ist der Code, den ich tun Forschung auf:
var p1 = new Promise((resolve, reject) => {
setTimeout(resolve, 1000, 'one');
});
var p2 = new Promise((resolve, reject) => {
setTimeout(resolve, 2000, 'two');
});
var p3 = new Promise((resolve, reject) => {
setTimeout(resolve, 3000, 'three');
});
var p4 = new Promise((resolve, reject) => {
setTimeout(resolve, 4000, 'four');
});
Promise.all([p1, p2, p3, p4]).then(values => {
console.log(values);
});
// print:
// one
// two
// three
// four
[Dokumentation] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise/all) sagt Ihnen alles, was Sie –
Dank wissen müssen @JaromandaX ich – zhangjinzhou