我有一个从 jQuery 选择器派生的变量 y:
function g() {
jQuery('.MyProperty').each(function(){
var x = jQuery(this);
f(x);
});
}
function f(x) {
var y = x.siblings('SomeProperty').children('SomeClass');
var myValue = random();
y.MyValue = myValue;
jQuery.ajax(
/* ... */
success: function {
if (myValue != y.MyValue) {
/// Do something!
} else {
/// Do something else!
}
}
);
}
现在,让我们假设 g() 是一个事件处理程序,只要用户单击按钮就会运行。这意味着它可以连续发射。由于 f() 触发异步 AJAX 调用,浏览器在成功之前不会阻塞,并且在所有 f() 调用完成后它们都可能以某种随机顺序到达(请记住,它们不会阻塞 AJAX 调用并且将完成),例如:
我面临的问题是,每个 AJAX 回调中的 y 似乎是实际 DOM 对象的快照,因为 y.MyValue 的状态似乎没有改变,尽管对 g() (和 f() 的调用产生了扰动) ) 发生在回调函数运行之前。
我想知道是否有任何方法可以刷新 jQuery 选择器,以便 y 的状态可以正确更新。
编辑:为了澄清我的担忧,这是一个示例事件队列:
g() /// Sets y.MyValue to 1.5555
g() /// Sets y.MyValue to 634.34
g() /// Sets y.MyValue to 555555
AJAX call back // Reads y.MyValue as 1.5555 when it should be 555555
AJAX call back // Reads y.MyValue as 555555 which is correct
g() /// Sets y.MyValue to 4232
AJAX call back // Reads y.MyValue as 4232 which is correct
AJAX call back // Reads y.MyValue as 634.34 when it should be 634.34
当服务器的响应时间出现波动时,这可能会发生。