【发布时间】:2016-12-15 22:04:58
【问题描述】:
我想知道为什么下面的代码在循环中开始下一个动画之前不等待动画完成。
由于某种原因,循环创建的所有元素都会同时显示并淡入。从代码中,我希望第一个元素将在循环的第一次迭代完成之前完成淡入,然后“for”循环的第二次迭代将在下一个元素中淡入,依此类推..
我不想在这创建混乱的代码之前使用回调,而且我想使用一个将使用动态数据的循环——动画的数量会有所不同。
<div id="container"></div>
<script>
var data = [1,2,3,4];
for(var i = 0; i < data.length; i++){
$("#container").append("<h1>"+data[i]+"</h1>").hide().show("fade",2000);
$("#container").promise().done(function(){console.log('sweet');});
}
</script>
【问题讨论】:
-
我不认为你可以通过循环实现这一点。使用 Promise 链和一些带有计数器的递归函数。解决的第一个承诺返回第二个承诺,依此类推
-
对不起,不明白你的意思。你能提供代码示例吗?我已经搜索了互联网,但找不到任何描述循环和可用于 jquery 效果的承诺的使用..
标签: javascript jquery jquery-ui promise jquery-deferred