ich eine Funktionskette in einem node 4.3
Skript, das so etwas wie, Rückruf sieht -> Versprechen -> async/await -> async/await -> async/awaitFangen Fehler von verschachtelten async/erwarten Funktionen
wie so :
const topLevel = (resolve, reject) => {
const foo = doThing(data)
.then(results => {
resolve(results)
})
.catch(err => {
reject(err)
})
}
async function doThing(data) {
const thing = await doAnotherThing(data)
return thing
}
async function doAnotherThing(data) {
const thingDone = await etcFunction(data)
return thingDone
}
(der Grund ist es nicht async/await
den ganzen Weg durch ist, dass die Top-Level-Funktion eine Task-Queue-Bibliothek ist, und kann angeblich nicht async/await
Stil ausgeführt werden)
Wenn etcFunction()
wirft, macht das error
Blase den ganzen Weg bis zur obersten Ebene Promise
?
Wenn nicht, wie kann ich aufblasen errors
? Muss ich jeden await
in einem try/catch
und throw
von dort wie so wickeln?
async function doAnotherThing(data) {
try {
await etcFunction(data)
} catch(err) {
throw err
}
}
Was ist 'makePromise'? – Bergi
"* Die Top-Level-Funktion ist eine Task-Queue-Bibliothek, und angeblich kann async/await style * nicht ausgeführt werden" - es gibt keinen Grund, warum eine Queue-Bibliothek Async-Funktionen nicht als Tasks verwenden kann. Sie sollten wirklich nicht mit Rückrufen umgehen müssen. Verwenden Sie eine Wrapperfunktion, wenn Sie eine bestimmte Warteschlangenbibliothek verwenden müssen, die den Rückrufstil verwendet. – Bergi
@Bergi 'makePromise' ist eigentlich eine 'async'-Funktion, aber da es aus einer Nicht-Async-Umgebung aufgerufen wird, handle ich es wie ein Versprechen. Re: Ich stimme zu, ich werde versuchen und versprechen-ify es schließlich, aber kann ich zuverlässige Fehler in der Zwischenzeit sprudeln? – Brandon