Почему результат функции был выдан не через определенное кол-во миллисекунд?

function f(x) {
	alert( x );
}
function delay(f, ms){
	return function(arg){
		return setTimeout(f(arg), ms);
	}
}

var f1000 = delay(f, 3000);
var f1500 = delay(f, 5500);

f1000("тест"); 
f1500("тест2");

Запускаю, и 'тест1', и 'тест2' возвращаются сразу, в чём проблема?
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 2
petermzg
@petermzg
Самый лучший программист
А что вы хотели получить?
У вас прямой вызов f(arg); вот и alert
Ответ написан
lazalu68
@lazalu68
Salmon
Чтобы отложить выполнение и передать аргумент, надо как-то так сделать:

function f(x) {
  alert( x );
}
function delay(f, ms){
  return function(arg){
    return setTimeout(function() { return f(arg); }, ms);
  }
}

var f1000 = delay(f, 3000);
var f1500 = delay(f, 5500);

f1000("тест"); 
f1500("тест2");
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы