Gibt es bei den folgenden Codebeispielen Unterschiede im Verhalten, und wenn ja, welche Unterschiede gibt es?
return await promise
async function delay1Second() {
return (await delay(1000));
}
return promise
async function delay1Second() {
return delay(1000);
}
So wie ich es verstehe, würde der erste eine Fehlerbehandlung innerhalb der asynchronen Funktion haben, und Fehler würden aus dem Versprechen der asynchronen Funktion heraussprudeln. Die zweite würde jedoch einen Tick weniger erfordern. Ist das richtig?
Dieses Snippet ist nur eine übliche Funktion, um ein Versprechen als Referenz zurückzugeben.
function delay(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async
aus Ihrem zweiten ( return promise
) Beispiel entfernen .
promise.then(() => nestedPromise)
würde sich abflachen und dem "folgen" nestedPromise
. Interessant, wie es sich von verschachtelten Aufgaben in C # unterscheidet, bei denen wir es tun müssten Unwrap
. Nebenbei bemerkt, es scheint, dass await somePromise
Aufrufe Promise.resolve(somePromise).then
nicht nur somePromise.then
mit einigen interessanten semantischen Unterschieden.