Javascript 是否等待jquery第一个更改事件完成?
我有两个选择框,我正试图改变。第二个依赖于第一个。这就是我到目前为止所做的:Javascript 是否等待jquery第一个更改事件完成?,javascript,jquery,Javascript,Jquery,我有两个选择框,我正试图改变。第二个依赖于第一个。这就是我到目前为止所做的: $.post('functions.php', {f: 'getdata', param1: parmvalue}, function(data) { if (data.platform_seen) { $("select#first_box").val(data.first).change(); if (data.target_release){ $
$.post('functions.php', {f: 'getdata', param1: parmvalue}, function(data) {
if (data.platform_seen) {
$("select#first_box").val(data.first).change();
if (data.target_release){
$("select#second_box").val(data.second).change();
}
}
}, "json");
第一个更改事件起作用,但它会立即触发第二个更改事件,并且第一个更改事件中的值尚未出现
如何在触发第二个更改事件之前等待第一个更改事件完成 您可以尝试将其包装在
setTimeout()
中,时间任意短,或者根本没有时间
setTimeout(function () {
if (data.target_release) {
$("select#second_box").val(data.second).change();
}
});
setTimeout
在执行之前等待当前进程完成。因此,在其内部调用匿名函数将等待第一次更改发生,然后再在其中运行代码
不设置时间或设置时间
0
基本上会告诉它在当前进程完成后立即调用此匿名函数。您可以使用回调嵌套它们-
if (data.platform_seen) {
$("select#first_box").val(data.first).change(function() {
// starts after first change function completes
if (data.target_release){
$("select#second_box").val(data.second).change();
}
});
}
这是一个不可靠的解决方案。你永远不能假设这个过程已经结束。