1

Why does setInterval(fetchData(), 1000*60); work in Chrome while throw an error Firefox; I want to pass a variable into fetchdata.

   function fetchData(var) {
        .....
    };

    fetchData(var); //run once
    setInterval(fetchData(var), 1000*60); //then repeat

Stack Trace:

[10:26:49.764] Error: useless setInterval call (missing quotes around argument?)
userController@http://localhost:8000/mainx.js:169
invoke@http://localhost:8000/lib/angular.js:2809
instantiate@http://localhost:8000/lib/angular.js:2819
@http://localhost:8000/lib/angular.js:4639
applyDirectivesToNode/nodeLinkFn/<@http://localhost:8000/lib/angular.js:4218
forEach@http://localhost:8000/lib/angular.js:117
nodeLinkFn@http://localhost:8000/lib/angular.js:4203
compositeLinkFn@http://localhost:8000/lib/angular.js:3851
publicLinkFn@http://localhost:8000/lib/angular.js:3763
bootstrap/</<@http://localhost:8000/lib/angular.js:932
Scope.prototype.$eval@http://localhost:8000/lib/angular.js:7840
Scope.prototype.$apply@http://localhost:8000/lib/angular.js:7920
bootstrap/<@http://localhost:8000/lib/angular.js:930
invoke@http://localhost:8000/lib/angular.js:2802
bootstrap@http://localhost:8000/lib/angular.js:929
angularInit@http://localhost:8000/lib/angular.js:904
@http://localhost:8000/lib/angular.js:14527
p.Callbacks/k@http://localhost:8000/lib/jquery-1.8.2.min.js:2
p.Callbacks/l.fireWith@http://localhost:8000/lib/jquery-1.8.2.min.js:2
.ready@http://localhost:8000/lib/jquery-1.8.2.min.js:2
D@http://localhost:8000/lib/jquery-1.8.2.min.js:2
Merlin
  • 24,552
  • 41
  • 131
  • 206

2 Answers2

3

Use

setInterval(function() {fetchData(var)}, 1000*60); //then repeat

What you are doing isn't actually passing your argument at all. You need to wrap it in an anonymous function.

Anirudh Ramanathan
  • 46,179
  • 22
  • 132
  • 191
2

This syntax is incorrect. You can't pass variables like this using setTimeout or setInterval.

setInterval(fetchData(var), 1000*60); //then repeat

Use the following instead.

setInterval(function() {
    fetchData(var);
}, 1000*60);
Anthony Grist
  • 38,173
  • 8
  • 62
  • 76
Brad M
  • 7,857
  • 1
  • 23
  • 40