我想使用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);但后来我收到了所有代码而不是函数。这是因为到现在我正在使用字符串来传递代码 )
答案 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);
这是否是你想要的我不能说,但它应该让你知道如何正确解决你的问题。