无法运行代码和函数调用在settimeout内作为字符串传递

时间:2013-07-21 19:01:24

标签: javascript

我想使用settimeout运行代码。 我有这个功能:

 function passing_functions(thefunction)
    {
    var my_function ="res="+thefunction+ "(); if (res==true){another_function} " 

并在此电话会议上:

 passing_functions("load_database");

我有这个字符串:

res = load_database();if (res==true){another_function}

好的,我无法在settimetout

中使用它
settimeout(function() {my_funtion},100}
settimeout(function() {my_funtion()},100}
settimeout(eval(my_funtion),100}
settimeout(my_funtion),100}
settimeout(my_funtion()),100}

等--- 我总是有错误或没有......

我也试过用“这个”。作为“功能”的前缀而没有成功。

有人能帮帮我吗?我做错了什么? 感谢

注意: (我想创建一个要执行的事物数组。 我可以使用passing_functions(load_database);但后来我收到了所有代码而不是函数。这是因为到现在我正在使用字符串来传递代码 )

1 个答案:

答案 0 :(得分:0)

您的所有“函数调用”都以}而不是)结尾,或者在其间的某个位置结束)The signature is setTimeout(func, time),即函数接受两个参数,另一个函数和一个数字。参数放在(...)之间,用逗号分隔。假设my_funtion实际上是一个函数,setTimeout(my_funtion, 100)将是有效的。

但是,您似乎正在尝试运行字符串内的JavaScript代码。不要那样做。 JavaScript是一种功能强大的语言,其功能是一等公民。因此,不要传递函数的名称并构建字符串,只需直接传递函数:

function passing_functions(thefunction) {
    setTimeout(
        function() { // first argument: a function
            var res = thefunction(); // call the function passed as argument
            if (res) {
                // I assume you actually want to *call* that function
                // just putting another_function there doesn't do anything
                another_function(); 
            }
        },
        100 // second argument: the delay
    );
}

// the function load_database must exist at the time you pass it
passing_functions(load_database);

这是否是你想要的我不能说,但它应该让你知道如何正确解决你的问题。