Передача параметра анонимной функции в setTimeout () - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь выяснить, почему не работает следующий код

function testFunction(fn) {
    setTimeout(fn(1), 1000)
}

this.testFunction(id => console.log("id; " + id))

Удаление setTimeout() и простое использование fn(1) запишут в лог желаемый результат

идентификатор; 1

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Как отмечает Jaromanda X в комментариях, любые параметры, которые должны быть переданы анонимной функции, должны быть переданы в функцию setTimeout вместо использования скобок - fn(1) - так как это вызывает анонимную функцию перед ней передается setTimout

function testFunction(fn) {
    setTimeout(fn, 1000, 1)
}
0 голосов
/ 03 сентября 2018

Ваша функция принимает аргумент и, как следствие, он немедленно вызывается. Поместите алгоритм в анонимную функцию.

setTimeout(() => fn(1), 1000)
...