2014-04-07 28 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);