有没有办法暂停一个函数来检查元素的状态,只有在状态发生变化时才能继续?
这是我的功能:
JS
download : function() {
var loading = $('#stats-table > div > div.jtable-busy-message').html();
while (loading.length > 0) {
alert("Table still loading, please wait to download report");
loading = $('#stats-table > div > div.jtable-busy-message').html();
}
// continue with the rest of the function here
}
我应该在上面的函数中替换说明性的while
循环,以暂停函数并在继续执行函数之前检查.length
loading
的更改。
有关信息,loading
变量的长度为18
和0
- 因此只需检查此更改的长度即可。
因此,直到长度更改不会继续使用方法体的其余部分。
更新
我找到了一种简单的方法,所以不再需要任何答案 - 谢谢
答案 0 :(得分:0)
不,Javascript(大多数情况下)是单线程的,除非其他一些代码改变了它,否则状态不可能改变。任何这样的改变都不会发生" mid function"。您的while
循环只会导致浏览器永久锁定。
如果您正在等待异步加载操作完成,那么您的代码需要在该操作的完成回调中继续。
答案 1 :(得分:-1)
$.fn.exists = function(callback) {
var args = [].slice.call(arguments, 1);
if (this.length) {
callback.call(this, args);
}
return this;
};
// Usage
$('div.test').exists(function() {
//do your stuff
});
这可能对您有所帮助:)。