Ниже приведена демонстрация этого цикла «async». это «задерживает» итерацию в течение 1 мс и в течение этой задержки, это дает UI шанс что-то сделать.
function asyncLoop(arr, callback) {
(function loop(i) {
//do stuff here
if (i < arr.Length) { //the condition
setTimeout(function() {loop(++i)}, 1); //rerun when condition is true
} else {
callback(); //callback when the loop ends
}
}(0)); //start with 0
}
asyncLoop(yourArray, function() {
//do after loop
});
//anything down here runs while the loop runs
Существуют альтернативы, например веб-работники и в настоящее время предлагается setImmediate , который afaik, на IE , с префиксом.