当for循环结束时,Javascript执行一个操作
Javascript perform an action when for loop ends
我想在执行循环时显示一个加载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');
}
}
相关文章:
- fluxxor向一个flux实例添加一组以上的操作
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- 选中复选框的Jquery/Javascript问题使用输入框操作将行从一个表添加到另一个表
- 一个jsp中有两个操作URL
- 使用react router/react router redux将特定的redux操作绑定到一个路由
- 响应应包含一个对象,但得到的却是GET操作的数组
- 制作一个高阶组件,用TypeScript实现反应中继和反应路由器的交互操作
- 当我的表单中已经有一个操作时添加JavaScript
- javascript下载一个文件并执行提交操作
- 为主题选项(部分)创建一个ajax处理的保存操作
- 表单操作 一个外部 JavaScript 函数
- 两个点击操作一个按钮
- 一个表单需要两个操作(一个本地,一个远程)
- 操作一个JS对象
- 两个jquery提交,每个操作一个
- Ajax -操作一个正确的数组以传递给PHP
- 操作一个包含文本的DOM节点和innerHTML以外的其他节点
- 是否可以从JS暂停/恢复/操作一个swift对象?
- Jquery多个操作一个if
- 根据其他类的css样式来操作一个类的css风格