Как вы передаете объект в setinterval? - PullRequest
0 голосов
/ 18 февраля 2012

например, скажем, я использую фабрику для создания группы объектов:

function factory() {
    e.x = 0;
    e.y = 0;
    return e;
}

Как передать эти объекты в функцию рендеринга?

Например:

function render() {
    a[0].someMethod;
}

function init() {
    for(i=0;i<10;i++) {
        things[i] = factory();
    }
    setInterval(render(things),40);
}

Ответы [ 2 ]

5 голосов
/ 18 февраля 2012

Вам нужно использовать замыкание там:

setInterval(function(){
   render(things);
},40);

setInterval принимает функцию обратного вызова (функция с именем без ()), но когда вы делаете:

setInterval(render(things), 40);

Вы на самом деле вызываете функцию (из-за (things) круглых скобок) прямо там внутри setInterval, что неправильно.

1 голос
/ 18 февраля 2012
setInterval(function() { render(things) },40);
...