Взаимодействие между await и try {} finally {} - PullRequest
1 голос
/ 05 февраля 2020

У меня есть эта простая функция asyn c:

async function do_stuff() {
    try {
        console.log("Start")
        await inner_func();
    }
    finally {
        console.log("At finally");
    }
}

к моему удивлению это печатает:
Start
At finally
(things from the async inner_func)

Теперь, концептуально я могу понять, почему это происходит, await возвращает Обещание от do_stuff, а возврат из функции вызывает finally, но это, кажется, нарушает весь смысл await - что это дает иллюзию что код выполняется последовательно

Таким образом, правильное решение, по-видимому, заключается в том, чтобы взять обещание и вызвать на нем finally(), но это выглядит странно, поскольку мне нужно будет дважды продублировать код в finally {}

...