2016-09-12 10 views
1

は、だから私は私の小さなプロジェクトのために、この短いコードを書いた、ここではコードです:無限ループチェッカーがクラッシュ - jqueryの

while(true){ 


if(PremiumExchange.data.stock["wood"]>=64){ 

var x = PremiumExchange.data.stock["wood"]; 
document.getElementsByName('buy_wood')[0].value = x; 
document.getElementsByClassName('btn float_right btn-premium-exchange-buy')[0].click(); 
document.getElementsByClassName('btn evt-confirm-btn btn-confirm-yes')[0].click(); 

} 
} 

基本的に「PremiumExchange.data.stock["wood"]」アップデートランダムに時々Webページ上の後。私はコードを立てて、それを見守ってから、私が指示したことをします。

問題は、無限ループを使用すると、問題が発生し、ハングします。これを回避する方法はありますか?おそらく何らかの種類のタイマーですか?

ありがとうございます。

編集:私はまた

function wait(){ 
    if (!(PremiumExchange.data.stock["wood"]>=64)){ 
    setTimeout(wait,500); 
    } else { 
    var x = PremiumExchange.data.stock["wood"]; 
document.getElementsByName('buy_wood')[0].value = x; 
document.getElementsByClassName('btn float_right btn-premium-exchange-buy')[0].click(); 
document.getElementsByClassName('btn evt-confirm-btn btn-confirm-yes')[0].click(); 
    } 
} 

を試みたが、動作するように表示されません。私は何か間違っているのですか?

+0

[Javascript:条件が真になるまで待機するノンブロッキングの方法]の複製が可能です。(http://stackoverflow.com/questions/12841568/javascript-non-blocking-way-to-wait-until-a- condition-is-true) – scrappedcola

+1

'setInterval'を試してみませんか? – StardustGogeta

+0

@StardustGogeta私は初心者です、私はそれをどのように使うのか分かりません。あなたは私に例を教えていただけますか? –

答えて

1

function test() { 
 
    if (document.getElementById("test").value) { 
 
    console.log("Success!"); 
 
    clearInterval(int); 
 
    } 
 
} 
 

 
var int = setInterval(test,0);
<input id="test"></input>

これはハングを引き起こすことなく、テストを設定する例です。

オプションで、clearIntervalが含まれているため、1回だけ実行されます。

+0

ありがとうございました –

+0

@Con大歓迎です。 :) – StardustGogeta

関連する問題