Scheinen einige Probleme Einbeziehung async/warten mit .reduce() zu haben, etwa so:JavaScript-Array .reduce mit Asynchron/await
const data = await bodies.reduce(async(accum, current, index) => {
const methodName = methods[index]
const method = this[methodName]
if (methodName == 'foo') {
current.cover = await this.store(current.cover, id)
console.log(current)
return {
...accum,
...current
}
}
return {
...accum,
...method(current.data)
}
}, {})
console.log(data)
Das data
Objekt wird protokolliert vor die this.store
abgeschlossen ist .. .
Ich weiß, dass Sie Promise.all
mit async Schleifen verwenden können, aber gilt das für .reduce()
?
Vielen Dank für Ihre Beratung am Ende . Ich benutzte nur eine einfache for-Schleife für das, was ich tat, und es waren die gleichen Codezeilen, aber viel einfacher zu lesen ... –
Der 'initialValue' von' reduce' muss kein 'Versprechen sein ', es wird jedoch in den meisten Fällen die Absicht klären. – EECOLOR
@EECOLOR Es sollte aber sein. Ich mag es wirklich nicht, auf ein Versprechen warten zu müssen – Bergi