当for循环结束时,Javascript执行一个操作

Javascript perform an action when for loop ends

本文关键字:操作 一个 执行 Javascript 循环 for 结束      更新时间:2023-09-26

我想在执行循环时显示一个加载gif。当循环结束时,隐藏它。For循环持续几秒钟。

$("#loading").removeClass('hidden');
        for (var i = 0; i < 10; i++)
        {
            clearInfo(i);
            loadInfo(i, getInfo());
        }
$("#loading").addClass('hidden');

这不起作用。我想最后一个addClass是在removeClass之后执行的,并且没有等待循环。。。

一种方法应该是,在带有回调的函数中插入循环,但没有更简单的方法吗?

问候,

JavaScript在单个线程中运行。通过复杂的同步计算阻塞这个线程不是一个好主意。签出WebWorkers。

如果loadInfo是异步操作,您可以使用这样的promise:

// show your loading indicator
var promises = [];
for (var i = 0; i < 10; i++) {
    clearInfo(i);
    // loadInfo returns promise
    promises.push(loadInfo(i, getInfo()));
}
Q.all(promises)
  .then(function () {
    // hide your loading indicator
  });

回调的解决方案将是一个混乱和肮脏的(根据我个人的意见)。

我可能会做一些类似的事情:

$("#loading").removeClass('hidden');
for (var i = 0; i < 10; i++) {
    clearInfo(i);
    loadInfo(i, getInfo());
    if ( i == 9 ) {
        // this is the final pass through the loop
        $("#loading").addClass('hidden');
    }
}