[英]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.