2017-05-08 124 views
0

假設該請:如何在setTimeout()完成之前停止處理?

setTimeout(function(){ 
    console.log('one'); 
}, 3000); 

console.log('two'); 

我想打印one第一,然後在控制檯two。當前代碼首先打印two

如何才能停止處理,直到setTimeout()完成?

注意到,我想執行setTimeout()一次。不是每3秒。


這是我真正的代碼:

var arr = ['mohammad', 'ali', 'zahra', 'fatemeh'], 
    res = [], 
    status = true; 

function myfunc() { 
    if (status == true) { 
    alert('test'); 
    console.log('Engine started fetching a new one!'); 
    status = false; 
    $('.im_dialogs_search_field').val(arr[0]); 
    $('.im_dialogs_search_field').trigger('change'); 
    setTimeout(function() { 
     if ($('li.im_dialog_wrap').length) { 
     res.push($(this.find('.im_dialog_photo').attr('src'))); 
     } else { 
     console.log('There is no result for ' + arr[0]); 
     status = true; 
     } 
    }, 3000); 
    arr.shift(); 
    } else { 
    console.log('Engine is bussy!'); 
    } 
} 

當我打電話myfunc()功能,它總是拋出Engine is bussy!。怎麼了?

+2

在'timeout'回調結束時移動'two'的代碼。 – Tushar

+0

你可以把'console.log('two')'放在'setTimeout'函數 –

+2

裏面,你創建了一個名爲「status」的全局變量,它已經被窗口使用過,重命名它或者把它放在另一個作用域中。 –

回答

2
setTimeout(function(){ 
    console.log('one'); 
    afterTimeout(); 
}, 3000); 

function afterTimeout(){ 
    console.log('two'); 
} 

希望這會有所幫助。

1

移動console.log('two')timeout 試試這個

setTimeout(function(){ 
 
    console.log('one'); 
 
    console.log('two'); 
 
}, 3000);

相關問題