Увы вопрос не понят. Сейчас он уже даже не в технической а в концептуальной форме.
функция А(){
ФункцияКоторуюНужноПодожд ать(); //" асинхронная "
//--- здесь функция которую нужно подождать точно завершена
следующий код
}
Функцию А точно нельзя делать async
Вот вопрос ставится именно так. Все остальные комбинации (технический) как реализовать, async и всякое такое не вариант.
На вопрос - как? Ответ скорей всего никак.
можно организовать некую переменную для контроля завершения. например так:
let finished = false;
ФункцияКоторуюНужноПодожд ать();
while( finished ){}
Но так тоже не пойдет - JS это не многопоточная среда. Чтобы выполнился "асинхронный" (на самом деле он ни какой не асинхронный) код необходимо закончить цикл и уйти в ядро JS. Потому как пока крутится цикл - все так называемые асинхронные задачи остановлены.
Если есть вариант в цикле отдать управление очереди JS и потом получить обратно в то же самое место, то задачу решить в такой постановке удастся.
Например
let finished = false;
ФункцияКоторуюНужноПодожд ать();
while( finished ){
ОтдатьУправлениеОчередиJS() ;
}
|