2013-03-14 41 views
13

Làm thế nào để vượt qua đối số trong hàm setInterval Ví dụ:Javascript hàm setInterval với đối số

intId = setInterval(waiting(argument), 10000); 

Nó cho thấy lỗi : useless setInterval call (missing quotes around argument?)

+1

setInterval (function() {chờ (argument)}, 10000) – rab

+0

thể trùng lặp của [các tham số đèo trong hàm setInterval] (http://stackoverflow.com/question/457826/pass-parameters-in-setinterval-function) – 416E64726577

Trả lời

39

Sử dụng một chức năng ẩn danh

intId = setInterval(function(){waiting(argument)}, 10000); 

này tạo ra một parameterless chức năng ẩn danh gọi waiting() với các đối số

Hoặc sử dụng các thông số tùy chọn của setInterval() chức năng:

intId = setInterval(waiting, 10000, argument [,...more arguments]); 

Mã của bạn (intId = setInterval(waiting(argument), 10000);) gọi waiting() với argument, mất giá trị trả về, cố gắng đối xử với nó như một chức năng, và thiết lập khoảng thời gian cho rằng giá trị trả về . Trừ khi waiting() là một hàm trả về một hàm khác, điều này sẽ thất bại, vì bạn chỉ có thể coi các hàm là hàm. Không thể đánh số/chuỗi/đối tượng vào một hàm.

6

Sử dụng phương pháp này:

var interval = setInterval(callback , 500 , arg1 , arg2[, argn ]); 
[...] 
function callback(arg1, arg2[, etc]){ 
} 

Thông tin thêm ở đây: window.setInterval

10

Bạn có thể sử dụng Function#bind:

intId = setInterval(waiting.bind(window, argument), 10000); 

Nó trả về một chức năng mà sẽ gọi hàm mục tiêu với bối cảnh nhất định (window) và bất kỳ đối số tùy chọn nào.

-2

setInterval (function() {funca (10,3);}, 500);

+0

[This] (https://stackoverflow.com/q/457826/4642212) là câu hỏi mà bạn đang cố gắng trả lời. – Xufox

1

Bạn có thể sử dụng liên kết và áp dụng các chức năng để lưu trữ đối số trong trạng thái.

Ví dụ sử dụng ràng buộc trong vỏ nút:

> var f = function(arg) { console.log (arg);} 
> f() 
undefined 
> f("yo") 
yo 
> var newarg = "stuff"; 
> f(newarg) 
stuff 
> var fn = f.bind(this, newarg); 
> fn() 
stuff 
> var temp = setTimeout(fn,1000) 
> stuff 
Các vấn đề liên quan