Это то, что делает await
, он ожидает завершения асинхронного c вызова, прежде чем возобновить. В вашем образце не хватает большого количества кода, чтобы предоставить решение, определяющее c для вашего варианта использования. Но в целом, чтобы выполнить асинхронную обработку c при обновлении статуса Dynami c, вам понадобятся либо обратные вызовы, либо поток.
let sleep = ms => new Promise(r => setTimeout(r, ms));
let doAsyncWork = async onProgress => {
let n = 100;
for (let i = 0; i < n; i++) {
await sleep(Math.random() * 100);
onProgress(i / n);
}
onProgress(1);
};
let updateProgress = progress => {
document.querySelector('div').textContent = progress < 1 ?
`Working, ${progress * 100}%` :
`Complete!`;
};
doAsyncWork(updateProgress);
<div></div>