Я не могу найти никакой информации о фактической разнице.Разница между ожиданием сразу или ожиданием позже
Так что я всегда делал следующее:
public async Task<int> DoSomethingAsync()
{
DoSomethingElse()
var result = await GetValueAsync();
var intValue = DoAnotherThing(result);
return intValue;
}
await
вызов, а затем использовать его сразу после, но я видел в последнее время несколько постов, где люди делают следующее:
public async Task<int> DoSomethingAsync()
{
var task = GetValueAsync();
DoSomethingElse()
var result = await task;
var intValue = DoAnotherThing(result);
return intValue;
}
Значит ли это, что метод GetValueAsync
начинает его выполнение, а затем мы ожидаем его результата позже? Или это означает, что он выполняется синхронно, но все же можно использовать await
?
Это означает, что ваше первое предположение. –
Многие люди думают, что 'await' * начинает * что-то происходит. Это совершенно неправильно. 'await' просто ждет чего-то, чтобы закончить - как это было начато, это полностью деталь реализации других вещей - в этом случае, как« GetValueAsync »внутренне реализован. –
До сих пор три ответа не обсуждали созданный конечный автомат, который, я думаю, тоже потенциально важный для понимания. –