Cleaner setTimeout Callbacks

Cleaner setTimeout Callbacks


1 min read

Sometimes I'll write some code that needs to be wrapped in a setTimeout:

  setTimeout(myFunc, 1000);

If my function took any arguments, it would bum me out by having to add additional lines to call it inside an separate callback:

  setTimeout(() => {
    myFunc(arg1, arg2);
  }, 1000);

To keep things on one line, sometimes I'd bind the arguments to the function this way:

  setTimeout(myFunc.bind(null, arg1, arg2), 1000);

But here's the money: setTimeout takes additional arguments that get passed to the supplied callback:

  setTimeout(myFunc, 1000, '๐Ÿ„', '๐Ÿž'); // Logs "๐Ÿ„ + ๐Ÿž = ๐Ÿ”"

  function myFunc(protein, carb) {
    console.log(`${protein} + ${carb} = ๐Ÿ”`);

So now you can keep your fancy one-liners without binding! ๐Ÿ“ž


MDN Article on setTimeout

Check out more #JSBits at my blog, Or follow me on Twitter!