私の仕事は、長時間実行されるJSコードを実行することです。このルーチンはPOSTリクエストを生成し、それが終わって必要になると、答えに従って別のリクエストを生成します。
function routine (a)
{
var answer = createPostRequest (bla bla bla);
if (answer)
{
routine (a);
}
}
したがって、答えが真である限り、再帰的に自分自身を呼び出します。これまでのところ問題ありませんが、ブラウザがフリーズするか、ハングしすぎます。しばらくすると、Firefoxはスクリプトの実行時間が長すぎることを通知し、スクリプトを停止するように提案します。やる代わりに、タイミング1routine (a);
でやろうとしましたsetTimeout
。同じことですが、タイミングを100に設定すると、問題ないように見えます。しかし、不必要な待機とその主観的な数があります(100でも問題が発生した場合はどうなりますか?)Delphi / Windowsプログラミングのように、ある種の「メッセージベース」のものが必要です。プログラムはそれ自体にメッセージを送信します。JSでどのように達成できますか?
編集:リクエストを生成する方法:
var ajax = createXmlHttp();
ajax.open ('POST', 'dsdsdsad.adsf', false);
var parameters = 'param=1';
ajax.setRequestHeader ('Content-type', 'application/x-www-form-urlencoded');
ajax.setRequestHeader ("Content-length", parameters.length);
ajax.setRequestHeader ("Connection", "close");
ajax.send (parameters);
try
{
var answer = eval('(' + ajax.responseText + ')');
}
catch (error)
{
alert ('Error in the answer: '+ajax.responseText);
return;
}