Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Executing a function passed as an argument in Javascript?

I'm trying to write a generic function that will block out the UI while an AJAX call is made. What I'm trying to do is have a function A run any other function passed in as an argument. This is what I've got so far:

function blockWhileLoading(fn, msg)
{
  if (msg == null)
  {
    msg = 'Please wait while the next page is loaded...';
  }

  $.blockUI(
  {
    message: '<h1>' + msg + '</h1>',
    css:
    { 
      border: 'none', 
      padding: '15px', 
      backgroundColor: '#E3D9BA', 
      '-webkit-border-radius': '10px', 
      '-moz-border-radius': '10px', 
      color: '#4D2612'
    }
  }); 
  $('body').scrollLeft(0);

  setTimeout(function()
  {
    eval(fn);
    $.unblockUI();
  }, 1000);
}

Now when it comes time to eval the function, nothing seems to happen. Is eval not the correct way to force a function to run?

like image 552
Sonny Boy Avatar asked Jan 23 '23 14:01

Sonny Boy


1 Answers

No, eval is used to turn a chunk of "string" into JavaScript code at runtime. Simply call fn(). It's a function reference.

This is what eval does:

var myalert = "alert('test');";
eval(myalert);

Equivalent to:

eval("alert('test');");
like image 98
Jonathon Faust Avatar answered Jan 31 '23 03:01

Jonathon Faust