Javascript 関数do_when
を使用して別の関数を評価し続け、true が返されたらアクションを実行しています。ここで関数を見つけました:javascript、何かが真になるのを待ってからアクションを実行します
do_when
関数 は次のとおりです。
function do_when(predicate, action, timeout_step) {
if (predicate()) {
action();
} else {
setTimeout(do_when, timeout_step, predicate, action, timeout_step);
}
}
私はそれを使ってjQuery関数を呼び出しています:
do_when(function() {return tabledrawn;},
function() {$("#mytable tbody tr td").first().click();},
100);
Firefox と Chrome ではすべて正常に動作しますが、IE9 (およびそれ以前) では失敗します。do_when
具体的には、関数から呼び出されたときに「オブジェクトが必要です」というエラーが発生しsetTimeout
ます。
do_when
デバッグを行うと、述語とアクションの引数は、最初に呼び出されたときに関数オブジェクトとして正しく表示されますが、setTimeout
関数から再度呼び出されると、両方とも未定義として表示されます。setTimeout
IEが見たい方法に引数を提供していないようです。IE で関数オブジェクトとそのパラメーターを引数として渡す適切な方法はありますか?
編集:
SLaksの提案ごとdo_when
に、次のように変更しました:
function do_when(predicate, action, timeout_step) {
if (predicate()) {
action();
} else {
setTimeout(function () {
do_when(predicate, action, timeout_step);
},
timeout_step);
}
}
私の問題を解決します。