I zu beenden haben eine Promise.all, die auf einem Array-Eingang zugeordnet asynchrone Funktionen ausführt, wenn es nicht null ist, und dann werden Daten zu lösen, um eine vorher definierte Versprechen:für Versprechungen innen Promise.all Warten, bevor es der Lösung
Promise.all((inputs || []).map(input => {
return new Promise((resolve, reject) => {
someAsyncFunc(input)
.then(intermediateOutput => {
someOtherAsyncFunc(intermediateOutput)
.then(output => {
return Promise.resolve(output)
})
.catch(reason=> {
return Promise.reject(reason)
})
})
.catch(reason => {
return Promise.reject(reason);
})
})
.then(outputs => {
resolve(outputs)
})
.catch(reason => {
reject(reason)
})
}))
Ich bekomme nur leere Ausgaben, bevor sogar einige AsyncFunc seine Arbeit beendet. Wie kann Promise.all auf die Versprechungen im Inneren warten, um ihre asynchrone Arbeit zu beenden?
Sie sind sehr verwirrt darüber, wie 'Promise.all()' funktioniert. Es akzeptiert keinen Rückruf, wie Sie ihn in Ihrer ersten Codezeile deklariert haben. Es akzeptiert eine Reihe von Versprechen. – jfriend00
'return Promise.all (inputs.map (someAsyncFunc));' ist wahrscheinlich das, was Sie suchen? –
@Arthur, ja, aber eigentlich habe ich eine andere Funktion, um direkt nach etwas AsyncFunc aufzurufen. Ich werde meinen Code bearbeiten, um das zu zeigen – mouuu