Задать вопрос
@r2sada2r

Как добиться ожидания результата функции в операторе if?

function testFunc() {
	async.series([
		function(down) {
			setTimeout(function(){
				down();
			}, 10000);
		}
	],
	
	function() {
		return true;
	});
};

if(testFunc()) console.log('Result function: true');
else console.log('Result function: false');


После запуска, получаю: Result function: false
Оно и понятно, т.к. return true; в testFunc, наступит только через 10 сек.

Как заставить оператор if, ждать результат функции testFunc?
  • Вопрос задан
  • 300 просмотров
Подписаться 1 Оценить Комментировать
Решение пользователя Dmitriy Mozgovoy К ответам на вопрос (3)
DIITHiTech
@DIITHiTech
Fullstack javascript developer
Почитайте о обещаниях...(promises) тогда можно будет упростить :

var testFunc=new Promise(function(resolve,reject){

           setTimeout(function() {
               //down();
               resolve();
           }, 10000);

       });


       testFunc.then(function(){
           console.log('Result function: true');
       },function(err){
            console.log('Result function: false');
       });


или
function  testFunc(){
           return new Promise(function(resolve,reject){
             setTimeout(function() {
               //down();
               resolve();
             }, 10000);

           });
       }

       testFunc().then(function(){
           console.log('Result function: true');
       },function(err){
            console.log('Result function: false');
       });
Ответ написан