繁体   English   中英

在Javascript中执行作为参数传递的函数?

[英]Executing a function passed as an argument in Javascript?

我正在尝试编写一个泛型函数,它会在进行AJAX调用时阻塞UI。 我要做的是有一个函数A运行作为参数传入的任何其他函数。 这是我到目前为止所得到的:

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);
}

现在,当需要评估函数时,似乎没有任何事情发生。 eval不是强制函数运行的正确方法吗?

不,eval用于在运行时将一大块“string”转换为JavaScript代码。 只需调用fn() 这是一个功能参考。

这就是eval的作用:

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

相当于:

eval("alert('test');");

只需使用fn();

为什么不简单地使用:

fn();

而不是eval

如果fn作为对象而不是字符串传递,则调用fn()应该有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM