2014-04-07 26 views
0

在javascript中,我知道我们可以观察属性更改,但可以观看函数吗?看着一个函数

如果我有这样的计算结果为boolen功能

function eval(value) { 
    return value == 1; 
} 

这将有可能持续评估这个功能直到真的吗?

我知道setTimeout可以工作,但这似乎是一个黑客。有没有更好的办法?

+0

这是唯一的办法替代的作用。 –

+3

*“...可以观看一个功能?”*观看它做什么?你期望*函数*改变,或者它的返回值? (例如,因为它的返回值是基于它关闭的东西)。 –

+2

不确定你的意思,也许你应该更具体或提供一个用例。有一些框架可以像“观看”函数/变量值那样提供角度和基因敲除。你也可以看看[lodash](http://lodash.com/docs#compact)函数部分。它可能会有帮助。 – haki

回答

0

有两种主要可能的方式,第一种是你的,setTimeout。第二个是的setInterval:

var checkEval = setInterval(function(){eval(value)},1000); 

而且你可以用它结束:

clearInterval(checkEval); 
0

用包装材料

function something(){ 
    return value==1; 
} 

(function(window){ 
    var oldSomething = window.something; 
    window.something = function(){ 
    var result = oldSomething.apply(null,arguments); 
    if(result===true){ 
     //do what you need 
    } 
    return result; 
    }; 
})(window);