我正在使用 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);
}
}
这解决了我的问题。