我看到其他一些问题似乎与类似话题有关,但没有一个问题可以帮助我解决我的特定问题。我在JavaScript中使用setTimeout
和setInterval
函数构建了一个线程库。这是非常好的,除了我的线程库要求线程的名称过去到线程,即当我实例化线程时它看起来像这样。
t = new Thread(payload, "t")
payload是一个对象,它定义了线程在有机会执行时将执行的操作。这允许我从底层线程“plumbing”中抽象出线程的任务。无论如何我的问题是我必须传递线程的名称,因为setTimeout
和setInterval
将JavaScript命令作为字符串,即setTimeout("doStuff", 0)
。当我在更多应用程序中使用我的线程库时,将名称传递给线程变得更加痛苦。所以我希望能够通过从线程类中获取线程的名称来避免这种情况:
var myThreadName = this.someMagicFunction();
或
var myThreadName = someMagicFunction(this);
或其他一些奇妙的方法,如果有人对我有任何想法,我将非常感激。
答案 0 :(得分:3)
实际上,两者都可以将函数作为第一个参数,这是建议的用法(因为字符串版本执行eval
)。
setTimeout(doStuff, 0);
在您的情况下,您可以执行以下操作:
setTimeout(function(){
t.payload();
}, 0);
取决于Thread对象的外观。
请参阅MDC文档(setTimeout,setInterval)。
答案 1 :(得分:0)
只要它是无参数的,你就可以将函数传递给setTimeout
,即
function takeme()
{
alert('workin?');
}
setTimeout(takeme, 100);
如果不是,那么你可以尝试
function takeme(x)
{
alert(x);
}
var test = 1;
setTimeout(function(){ takeme(test); }, 100);
但如果您确实需要提取函数名称,请参阅this post。不完全相同,但有些相关。