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();
        }
    });
}

这是一个不可靠的解决方案。你永远不能假设这个过程已经结束。