a
невозможно сделать в subpoint
. что реализации там нет.
Это из-за порядка выполнения. Если вы передадите вызов функции setTimeout, функция будет выполнена немедленно, то есть функция сразу же будет помещена в стек выполнения javascript.
Если вы передадите имя функции, то есть ссылку на функцию, функция будет только помещена в стек выполнения потока javascript после окончания таймера.
Правильный способ передачи ссылки функции - использовать обратные вызовы.
names.forEach(name => setTimeout(function() {
printer(name);
}, 1000));
обратные вызовы содержат ссылку на функцию.
setTimeout(callbackFunction, milliseconds);
Вы можете сделать это следующим образом:
setTimeout(printer, 1000, name)
вы можете попробовать следующее:
setTimeout(function(){printer(name)}, 1000)
setTimeout
должен принимать функцию в качестве своего первого аргумента.
Пожалуйста, обратитесь:
https://www.w3schools.com/jsref/met_win_settimeout.asp
Здесь вы передаете результат функции в качестве первого аргумента, который является undefined
.