0

我想使用 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}

等等---我总是有错误或什么都没有....

我也尝试过使用“this”。作为“功能”的前缀没有成功。

有人可以帮助我吗?我做错了什么?谢谢

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

4

1 回答 1

0

您所有的“函数调用”都以 a}而不是 a结尾,)或者)在两者之间的某个地方结束。签名是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);

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

于 2013-07-21T19:15:05.377 回答