javascript - 如何仅在第一个函数完成后才执行第二个函数?

标签 javascript jquery function callback

我有 2 个独立的函数,两个函数都在发出 GET 请求。 完成后,我需要将响应 1 中的数字与响应 2 中的数字相加。所以基本上我想要创建第三个函数,它将把前两个函数的结果相加。 问题是第三个函数在第一个和第二个函数之前执行。

我尝试了回调,但似乎没有按预期工作。下面您可以找到一个简单的示例,我想在我的代码中实现它之前了解基础知识。我尝试过的回调示例:

function first(callback){
    setTimeout(function(){
        console.log(1);
    }, 500);
    callback()
}

function second(){
    console.log(2);
}

function third(){
    first(second);
}

third();

没有回调的示例:

function first(){
    setTimeout(function(){
        console.log(1);
    }, 500);
}

function second(){
    console.log(2);
}

function third(){
    first();
    second();
}

third();

https://jsfiddle.net/u8a592pz/

当前该函数执行为:

2
1

我想要得到什么:

1
2

最佳答案

first 的内容包装在 Promise 中并返回它。并将 third 设置为 async 函数,并在 first() 之前使用 await

function first(){
    return new Promise(res => {
      setTimeout(function(){
        console.log(1);
        res();
      }, 500);
    })
}

function second(){
    console.log(2);
}

async function third(){
    await first();
    second();
}

third();

关于javascript - 如何仅在第一个函数完成后才执行第二个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55678915/

相关文章:

javascript - 单击按钮时替换图像

javascript - JavaScript 中的所有函数本质上都是方法吗?

c - 为什么 "while"的一个主体工作而另一个不工作?

javascript - 与 JavaScript 混合时,SYMFONY FORM isClicked() 问题(取决于浏览器) - JQuery : event. PreventDefault() 和 event.target.submit()

Jquery - 获取多选列表的所有值

jquery - AJAX 成功 html 对话框,不会在按钮单击时关闭

c - 用于描述 C 风格函数定义的 "top"和 "bottom"部分的名称是什么?

javascript - 通过js键码允许带有数值的点/句号

javascript - 从 javascript 对象/数组结构中的任意点开始计数 'last children'

javascript - 这种flash的拖放动画可以在javascript库中完成吗?