別の関数がタスクを完了するまで関数を一時停止しようとしています。.ajaxComplete() に似たものはありますが、関数の完了のためですか?
このコードは、最初は「テスト」をすばやく出力し、その後速度を落とします (必要に応じて減速します)。ループ内の数値が大きくなると、setTimeout が長くなるため、ループが進むにつれて「遅く」出力されます。基本的に、関数が出力されるまでループを一時停止する必要があります。
編集 - コードを更新しました。「test」は一度だけ出力され、それ以外は何も起こりません。
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<input type="button" value="Display alert box" onclick="docWrite()" />
<script>
var b = 0;
function docWrite() {
document.write("test");
timeMsg();
}
function timeMsg() {
b += 250;
if (b < 5000) { //check the limit
setTimeout("docWrite()", b - 250); //substract 250 (because we already added 250 before the first print
}
}
</script>
</body>
</html>