【问题标题】:Node.js concurrent API GETs, return as soon as one responsesNode.js 并发 API GET,一有响应就返回
【发布时间】:2022-07-01 23:33:10
【问题描述】:

我有一个 API 列表,我想在所有这些 API 上同时调用 GET,并在一个 API 完成请求和响应后立即返回。

我尝试使用 for 循环和中断,但这似乎不起作用。它总是使用第一个 API

import axios from 'axios';

const listOfApi = ['https://example.com/api/instanceOne', 'https://example.com/api/instanceTwo'];

for (const api of listOfApi) {
    try {
        response = await axios.get(api, {
            data: {
                url: 'https://example.com/',
            },
        });
        break;
    } catch (error) {
        console.error(`Error occurred: ${error.message}`);
    }
}

【问题讨论】:

    标签: node.js axios get request


    【解决方案1】:

    您可以使用Promise.race() 查看一组承诺中的哪一个先完成,同时并行运行所有请求:

    import axios from 'axios';
    
    const listOfApi = ['https://example.com/api/instanceOne', 'https://example.com/api/instanceTwo'];
    
    Promise.race(listOfApi.map(api => {
        return axios.get(api, {data: {url: 'https://example.com/'}});
    })).then(result => {
        // first result available here
        console.log(result);
    }).catch(err => {
        console.log(err);
    });;
    

    【讨论】:

      猜你喜欢
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      • 2016-04-25
      • 2016-11-28
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      相关资源
      最近更新 更多