Angenommen, diese bitte:Wie kann ich die Verarbeitung stoppen, bis setTimeout() fertig ist?
setTimeout(function(){
console.log('one');
}, 3000);
console.log('two');
I one
zuerst, und dann two
in der Konsole gedruckt werden sollen. Der aktuelle Code druckt zuerst two
.
Wie kann ich die Verarbeitung stoppen, bis setTimeout()
fertig ist?
Beachten Sie, dass ich setTimeout()
einmal ausführen möchte. nicht alle 3 sek.
Hier ist mein richtiger Code:
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!');
}
}
Wenn ich myfunc()
Funktion aufrufen, es wirft immer Engine is bussy!
. Was ist los mit dir?
Verschieben Sie den Code von 'two' am Ende des' Timeout' Callbacks. – Tushar
Kannst du die 'console.log ('two')' innerhalb der 'setTimeout' Funktion setzen –
hast du eine globale Variable mit dem Namen" status "erstellt, die bereits vom Fenster benutzt wird, sie umbenennen oder in einen anderen Bereich legen. –