javascript - 在 setTimeout() 中的 $.each 之后运行函数

标签 javascript jquery

我有点困惑,我有一个 setTimeout(),它有一个 $.each 函数,每 5 秒为每个 slider 设置动画。 (发生这种情况是因为 $.each 函数中的另一个 setTimeout()。

Now i'm wondering how I can run my populateGraph() function after the setTimeout and the $.each are completed, I tried the following but it runs at the same time

setTimeout(function() {
    $.each(data, function(i, v) {
        setTimeout(function() {
            $(".slider#" + v.id).slider("value", globalcoachscores[i]);
        }, 500 + (500 * i));
    });
    populateGraph();
}, 500);

谢谢!

最佳答案

您在最后一次 setTimeout 调用之后调用populateGraph(),诀窍在于,知道最后一次是哪个:

setTimeout(function() {
    var currentCount = data.length;
    $.each(data, function(i, v) {
        setTimeout(function() {
            $(".slider#" + v.id).slider("value", globalcoachscores[i]);

            //decrease currentCount by one
            currentCount--;

            //if currentCount is at 0, then we know we've completed the last setTimeout
            if(!currentCount) {
              populateGraph();
            }
        }, 500 + (500 * i));
    });

}, 500);

关于javascript - 在 setTimeout() 中的 $.each 之后运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30481994/

相关文章:

javascript - 如何仅针对构建排除 typescript 中的特定文件?

javascript - ColdFusion JSON 以特定格式返回

javascript - php 的 $_POST 中的 angularJs POST 数据

javascript - 合并多个页面的明文

javascript - 延迟视口(viewport)位置按钮的不透明度

javascript - 单击时更改 SVG 填充覆盖 - jQuery

jquery - 如何使用 jQuery 更改和更改 CSS

javascript - 移动网站<Iframe></Iframe>用什么替代

javascript - JS 在 Firefox 中工作,但在 Chrome 和 IE 中无法加载

javascript - 获取多个对象中的属性值