Я знаю, что здесь есть много вопросов, подобных этому, но ни один из них, который я видел, не ответил на это для меня. Если я пропустил один, и это дубликат, извините.Как передать индекс в setTimeout
Я пытаюсь изменить свой график с помощью 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, так что извините, если это что-то исключительно очевидное, я не могу найти ответ нигде.
спасибо, есть общее соглашение для javascript в отношении этого. то есть. Лучше ли связывать такие переменные или использовать отдельную функцию? – Damien
@Damien Я не уверен в том, что считается «правильным» (я уверен, что вы услышите много, часто противоположных мнений.), Но я всегда предпочитаю ясность в отношении умения. На мой взгляд, отдельная функция чище и проще отлаживать. Учитывая, что вы должны действительно заглянуть в '.bind', потому что это может быть чрезвычайно полезно во многих ситуациях. –