Javascript 将4个函数调用堆叠在一起

Javascript 将4个函数调用堆叠在一起,javascript,jquery,html,Javascript,Jquery,Html,长话短说,我希望能够连续执行4个函数,并确保第一个函数在第二个函数开始之前完成,等等。如何以最佳方式解决这个问题 这是交易。我有4个不同的字段(在一行中彼此相邻),这些字段将填充任意数量的标记。我有一个名为UpdateList(id)的函数,它可以工作,当我调用它时,它会进入数据库,并根据我在前面中已经选择的内容在下一个中打印出值。现在,我希望能够根据我在url中给出的内容来预先选择此文件中的值。例如,如果我给出了下面的url,我想预选1)test:2test2:3test3 :4 test4.

长话短说,我希望能够连续执行4个函数,并确保第一个函数在第二个函数开始之前完成,等等。如何以最佳方式解决这个问题

这是交易。我有4个不同的
字段(在一行中彼此相邻),这些字段将填充任意数量的
标记。我有一个名为
UpdateList(id)
的函数,它可以工作,当我调用它时,它会进入数据库,并根据我在前面
中已经选择的内容在下一个中打印出值。现在,我希望能够根据我在url中给出的内容来预先选择此文件中的值。例如,如果我给出了下面的url,我想预选
1)test
:2test2
:3test3
:4 test4.
现在我假设这些值存在于数据库中

example.com?to=test&tc=test2&te=test3&tet=test4
问题是当我打电话的时候

UpdateList(t);  
UpdateList(v);
UpdateList(w);
UpdateList(z);
第一个函数在第二个函数启动之前没有完成,因此它不会在第二个函数中打印id=v的任何值(因此也不会打印最后两个)

如何以最佳方式解决此问题?我曾想过类似的事情,但它不起作用

  UpdateList(t); 
    setTimeout(function(){
    UpdateList(v);
    setTimeout(function(){
    UpdateList(w);
    setTimeout(function(){
    UpdateList(z);
    },100);  
    },110);  
    },120);



<select id="u" onchange="UpdateList(this.id);"></select><option><!-PHP rendered options goes here->
<select id="v" onchange="UpdateList(this.id);"></select>!-PHP rendered options goes here->
<select id="w" onchange="UpdateList(this.id);"></select>!-PHP rendered options goes here->
<select id="z" onchange="UpdateList(this.id);"></select>!-PHP rendered options goes here->
UpdateList(t);
setTimeout(函数(){
更新列表(v);
setTimeout(函数(){
更新列表(w);
setTimeout(函数(){
更新列表(z);
},100);  
},110);  
},120);
!-PHP呈现选项位于此处->
!-PHP呈现选项位于此处->
!-PHP呈现选项位于此处->

抱歉,如果未指定的问题=)。

使用承诺库,如q

以下是q文档的摘录:

首先,承诺可以缓解“末日金字塔”:代码向右移动的速度比向前移动的速度快

step1(function (value1) {
    step2(value1, function(value2) {
        step3(value2, function(value3) {
            step4(value3, function(value4) {
                // Do something with value4
            });
        });
    });
});
有了promise库,您可以将金字塔夷为平地

Q.fcall(promisedStep1)
.then(promisedStep2)
.then(promisedStep3)
.then(promisedStep4)
.then(function (value4) {
    // Do something with value4
})
.catch(function (error) {
// Handle any error from all above steps }) .done();

请提供一个
UpdateList
函数的源代码。如果他们使用jQuery执行AJAX请求,请查看。不,不要使用
setTimeout
。函数执行的任务要么是同步的(那么你不需要做任何事情),要么是异步的(那么函数应该在完成时以某种方式向你发出信号)。为什么在不知道实现问题的情况下推荐另一个库?特别是当OP指定的jQuery和jQuery已经具备其中一些功能时?