Вопрос - к моменту возврата f () можно ли быть уверенным, что ProcessResponse выполнен?
Абсолютно нет.
f
объявлено async
он возвращает обещание и передает управление обратно на g
, как только переходит в режим сна, пока ожидает другое обещание.
То есть до того, как ProcessResponse
даже будет вызван.
Что, если g не объявлено как asyn c - будет ли это иметь значение?
Нет
Это может быть продемонстрировано:
const obj = {
ProcessResponse: () => console.log("Process Response")
};
function NetworkRequest() {
return new Promise( res => setTimeout(() => res(obj), 1000) );
}
async function f(x)
{
console.log("f, before await");
var f = await NetworkRequest(x);
console.log("f, after await");
f.ProcessResponse();
console.log("f, after Process Response");
}
async function g()
{
console.log("g, before f");
f(x);
console.log("g, after f");
}
const x = "global";
g();