私が取り組んでいる Javascript プロジェクトの一部として、いくつかの同期 ajax 呼び出しがあります(それは "sjax" になると思いますが、余談になります)。私は現在、デバッグ パネルを作成しています。このパネルを使用すると、人工的にシミュレートされたネットワーク条件をラップしてサイトをテストできます$.ajax
。簡単なこと: 500 レスポンスなどを偽造し、ajax 呼び出しにかかる時間を大幅に長くします。
非同期呼び出しの場合は簡単です。実際の応答が戻ってきたら、 a を追加しsetTimeout
て、コールバックをトリガーする前に人為的な応答時間を待機させます。ただし、同期ではないため、これは明らかに同期呼び出しでは機能しませんsetTimeout
。
では、Javascript プログラムにブロッキングを一定時間待機させる方法はありますか?
私が考えることができる唯一のことは、次のようなものです:
function wait(ms) {
var start = +(new Date());
while (new Date() - start < ms);
}
より良い解決策はありますか?
(また、ajax 呼び出しをブロックする正当な理由があると仮定してください... :-\
)