我知道这里有很多与此类似的问题,但我没有看到有人为我解答这个问题。如果我错过了一个,并且这是重复的,抱歉。
我正在尝试使用 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/