Я выполняю библиотечную функцию на стороне клиента, которая является синхронной по своей природе, поэтому, когда она выполняется, она блокирует весь поток пользовательского интерфейса.Я попытался обернуть все в обещание, но это все еще не решает проблему, которая, как я предполагаю, заключается в том, что обычно асинхронная функция в обещании выполняется где-то еще (т.е. на стороне сервера или стороннего API), но эта функция выполняется в моем браузере.
Я хочу не блокировать браузер до тех пор, пока этот libfunc не будет запущен или, возможно, не завершит работу libFunc через некоторое время.
function foo(){
return new Promise((resolve,reject)=>{
try{
library.libFunc();
resolve();
}catch(e){
reject(e);
});
}
function someFunc(){
foo()
.then(function(result){
console.log('hey');
})
.catch(function(e)){
console.error(e);
});
$timeout(function(){
console.log('hey'
},5000);
}
Он никогда не печатает эй, пока libFunc () не завершится.