У меня есть давно работающий ASP. NET Core API, который я хотел бы представить в виде индикатора выполнения в пользовательском интерфейсе.
Со стороны сервера я знаю, сколько заданий будет выполнено из самое начало. Скажем, если у меня есть 10 заданий, и каждое задание занимает секунду, это будет 10-секундный индикатор выполнения.
Лучшее, что я смог найти, было https://github.com/DmitrySikorsky/AspNetCoreUploadingProgress, но оно зависит от экономии прогресс по запуску. Прогресс, который равен stati c int. Разве это не значит, что во всем веб-приложении может быть только один сеанс загрузки за раз?
Интересно, могу ли я сделать это с помощью ax ios call:
return axios.post(
'/api/long-running-task',
{},
{
onUploadProgress: function(progressEvent) {
console.log("upload", progressEvent.loaded, progressEvent.total);
},
onDownloadProgress: function(progressEvent) {
console.log("download", progressEvent.loaded, progressEvent.total);
}
}
);
И если я сделаю что-то правильно со стороны ASP. NET Core, смогу ли я связаться с ax ios и запустить либо onUploadProgress, либо onDownloadProgress?
Что я пробовал:
[HttpPost]
[Route("long-running-task")]
public async Task<ActionResult> Run()
{
Response.StatusCode = 200;
Response.ContentType = "text/plain";
Response.ContentLength = 10;
var sw = new StreamWriter(Response.Body);
for (var i = 0; i < 10; i++)
{
await Task.Delay(1000);
await sw.WriteAsync("1");
await sw.FlushAsync();
}
return null;
}
ax ios записывает один upload
журнал вскоре после этого, а затем один download
журнал через 10 секунд. Промежуточный прогресс не получен.