javascript - NodeJs 等到循环中的所有调用都完成

标签 javascript node.js axios

我在 Node (初学者)中有以下代码,我想在循环中执行完所有代码后调用一个函数,我知道我必须使用 promise ,但我不知道如何应用它们在这个情况下。代码已被简化。非常感谢。

const axios = require('axios').default;

axios.post('url', {
    params: {}
}).then(response=>{
    var objResponse = response.data
    Object.keys(objResponse).forEach(function (key){
        axios.post('url', {
            params: {}
        }).then(response=>{
            var n=0;
            getCode(n);
        })
    })
    **finishFunction**()
})

function getCode(n) {
    axios.post('url', {
        params: {}
    }).then(response=>{
        if(response.data){
            if (response.data.code) {
                getData();
            }else{
                if (n < 10) {
                    n++;
                    getCode(n);
                } else {
                    getTimeout();
                }
            }
        }
    })
}

function getTimeout() {
    axios.post('url', {
        params: {}
    })
}

function getData() {
    axios.post('url', {
        params: {}
    }).then(response=>{
        console.log('finished one loop');
    })
}

最佳答案

实现您想要的效果的最佳方法是使用带有常规 for 循环的 async/await。

这是我的意思的一个例子。您可以根据需要进行调整:

async doSomeStuff() {
    const results = []

    const res1 = await axios.post('url', {
        params: {}
    })
    
    // assuming res1 is an Array
    for (let i=0; i < res1.length; i++) {
        const result = await axios.post('url2', {
            params: {}
        })
        results.push(result)
        
    }

    return results
}

您还可以在循环中调用其他异步函数。

关于javascript - NodeJs 等到循环中的所有调用都完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71228885/

相关文章:

javascript - 以 JSON 格式发布数据

node.js - 在带 Angular Electron 内部使用keytar

javascript - NodeJS - 如何让生成的 child 与 parent 沟通?

javascript - 将请求响应中收到的 wav 文件转换为 blob

javascript - window.setInterval() 不会立即加载 div 内容并中断 ColdFusion sessionTimeout

Javascript onchange 问题

适用于 Amazon SES 的 Node.js 模块

reactjs - 在自定义 React hook 中使用 axios

javascript - Axios 向后端发布请求参数未定义

javascript - 循环内声明的变量保留先前的值