javascript - 如何将索引传递给 setTimeout

标签 javascript d3.js

我知道这里有很多与此类似的问题,但我没有看到有人为我解答这个问题。如果我错过了一个,并且这是重复的,抱歉。

我正在尝试使用 d3 修改我的图表,并希望使用 setTimeout 以美观的方式间隔操作。

我有

for (var key in alist){
    setTimeout(function () {
        graph.removeLink(alist[key].source.name, alist[key].target.name);
    }(key), key*500+200);
}

这会立即调用removeLink函数,而不是等待设置的时间间隔。

我是 javascript 新手,很抱歉,如果这是非常明显的事情,我在任何地方都找不到答案。

最佳答案

您可以将变量动态绑定(bind)到匿名函数,或者创建一个函数来包装超时。

匿名函数绑定(bind):

for (var key in alist){
    setTimeout(function (alistitem) {
        graph.removeLink(alistitem.source.name, alistitem.target.name);
    }.bind(this, alist[key]), key*500+200);
}

独立功能:

function timedRemoveLink(item, time){
   setTimeout(function() {
     graph.removeLink(item.source.name, item.target.name);
   }, time);
};

for (var key in alist){
    timedRemoveLink(alist[key], key*500+200);
}

关于javascript - 如何将索引传递给 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29267511/

相关文章:

javascript - jQuery 搜索替换字符串

javascript - ES6 Yield* - 在引用的生成器上一次只产生一个值?

javascript - 使用 React Native 创建异步函数

javascript - D3.js 图表画笔和 Crossfilter.js 缩放不同步

javascript - 强制 Backbone fetch 总是使用 POST

javascript - jquery 看不到 anchor 标签

javascript - 如何在给定比例下初始化缩放?

javascript - 堆栈和嵌套无法将 v3 转换为 v4

javascript - d3js-强制 : nodes and links from json file not loaded in my svg during redrawing

javascript - 在 'load' 而不是鼠标事件上调用 D3.JS 函数