Javascript Array of Functions get auto executed

Tags: , ,



I need to make a sequence of Promises that are executed in a queue. They are dynamic so I need to put them in an array (I have found an article that explains how to).

The problem is that my array of functions autoexecuted it self (version with a normal funciton):

const functionTest = () => console.log("ok");

let tasks = [
  functionTest("berlin", "de", "metric"),
  functionTest("london", "en", "metric"),
  functionTest("paris", "fr", "metric"),
  functionTest("new York", "en", "imperial"),
];

I don’t know why, an array of functions is something that I never have done.

Is it normal?

Where is the problem?

Answer

You need to store the call as a lambda function if you want to call it later, like this:

let tasks = [
  () => functionTest("berlin", "de", "metric"),
  () => functionTest("london", "en", "metric"),
  () => functionTest("paris", "fr", "metric"),
  () => functionTest("new York", "en", "imperial"),
];

And you can call them like this:

tasks[0]();


Source: stackoverflow