У меня есть API, который возвращает список магазинов из моей базы данных вместе с магазинами из API Google Адресов.C# webapi отправить данные после возврата
IEnumerable<ShopInOfferDetails> modelApi = null;
IEnumerable<ShopInOfferDetails> modelDb = null;
await new TaskFactory()
.StartNew(() =>
{
modelApi = Service.GetShopsFromGoogleApi(g);
})
.ContinueWith(x =>
{
modelDb = Service.GetShopsFromDb(g);
});
var model = modelApi.Concat(modelDb);
return model;
Дело в том, что она занимает слишком много времени, чтобы получить и обработать результаты от Google API (я делаю больше работы на заднем плане), и мне интересно, если есть способ, чтобы получить первые данные из моего database - вернуть эти данные клиенту и только затем получить больше данных от Google Api и Return снова - таким образом, клиент получает первый результат быстро, а затем остальное от Google API.
Оба вызовы делают IO. Один для БД и один для Google. Я бы предложил использовать их параллельно, используя их естественно асинхронные API, такие, которые предлагаются через 'HttpClient' и многие ORM. Тогда вы можете «ждать Task.WhenAll» на обоих. Альтернативно, предложение Дамира о создании двух разных вызовов также может работать, если вы хотите показать конечным пользователям результат ASAP. –