2017-05-08 1 views
0

はこれをしてくださいと仮定しますsetTimeout()が終了するまで、どのように処理を停止できますか?

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

console.log('two'); 

は、私が最初にoneを印刷したいし、次にコンソールでtwo。現在のコードではtwoが最初に印刷されます。

setTimeout()まで処理を停止できますか?

注意してください。setTimeout()を一度実行します。それぞれ3秒ではありません。ここで


は私の実際のコードです:私はmyfunc()関数を呼び出すとき

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!'); 
    } 
} 

、それは常にEngine is bussy!をスローします。どうしましたか? timeout 内部

+2

'timeout'コールバックの最後に' two'のコードを移動します。 – Tushar

+0

'setTimeout'関数の中に' console.log( 'two') 'を置くことができます –

+2

あなたは既にwindowで使われている" status "という名前のグローバル変数を作成したか、名前を変更するか、別のスコープに入れます。 –

答えて

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

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

希望をお試しください。

1

移動console.log('two')は、このことができます。この

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

関連する問題