Пробовал так:
function asyncFunc(result) {
// if (result !== undefined) {
// console.log("then");
// return result;
// }
setTimeout(function() {
console.log("timeout done");
//asyncFunc("then");
result = "then";
}, 2000);
var startTime = Date.now();
while(Date.now() - startTime < 3000) {
if (result !== undefined) {
console.log("дождались");
return result
}
}
console.log("превышено время ожидания");
}
В этом случае таймер не срабатывает, пока не завершится цикл.