У меня есть метод web api, который должен вызывать 2 асинхронный метод от другой стороны, а результат первого асинхронного метода требуется для вызова второго метода асинхронного вызова , У меня что-то похожее на приведенный ниже код, который, очевидно, не работает с ключевым словом await, я понимаю, что он перейдет к следующей строке и продолжит и в то же время вернет объект Task вызывающему.Как вызвать взаимосвязанный метод async в методе web api
Краткое описание того, что мне нужно от этого метода, заключается в том, что мне нужно получить токен от стороннего метода асинхронизации, после этого, основываясь на токене, мне нужно сделать что-то, а затем использовать токен снова вызовите другой метод aysnc от третьего лица.
public async Task<ResponseObj> DoSomething()
{
var token = await GetTokenAsync();
DoStuff1();
var stuff = await CreateStuff(token);
SaveStuff(stuff);
ResponseObj response = new ResponseObj(stuff);
return response;
}
Я прочитал несколько статьи и пример в Интернете и некоторые люди говорят, что вместо ЖДУТ, я могу использовать Task.Result так, что следующий вызов в зависимости не будет работать, пока задача вернуть результат, некоторые люди используйте Task.Wait и, похоже, он будет ждать завершения задачи. Я пробовал оба и не смог достичь ожидаемого результата, который CreateStuffAsync не может запустить, пока у меня не получится результат GetTokenAsync.
Может кто-нибудь указать, что я сделал неправильно? Предположим, если первое ожидание уже возвращает задачу вызывающему, тогда что произойдет, когда будет достигнута вторая ожидание? Должен ли я не иметь больше 1 ожидания в методе, особенно когда один полагается на другой?
Пожалуйста, добавьте «код ниже». – JohanP
сделано, извините, я форматировал код, чтобы его можно было отобразить правильно. – qualizon
Вы действительно протестировали код, чтобы узнать, что это действительно сделает то, что вы хотите? – Servy