javascript - 如何在 NodeJS/Express API 中进行多个异步调用

标签 javascript node.js express asynchronous

我需要将一组 REST API 抽象为一个简单易用的 API。我计划创建一个简单的 nodejs/express API,异步进行各个标注,然后一次性返回所有结果。

JS场景变化很快,我看到的很多信息似乎都已经过时了。我希望有人能给我一些建议,并为我指出可能为此类场景设置的最佳实践或框架。

最佳答案

这听起来就像一个简单的 Express 应用程序 - 没什么复杂的。我将使用 request-promise 模块为您提供一个基于 Promise 的良好接口(interface),用于向其他主机发出请求,然后使用 Promise 将多个请求协调为一个响应。

除此之外,您还必须向我们展示您想要做什么的更多详细信息,以便我们提供更多具体信息。

如果您只想同时发出三个请求,然后合并结果,那么这里是一个粗略的示例:

const rp = require('request-promise');
const express = require('express');
const app = express();

app.get('/getAll', (req, res) => {
    // construct urls

    let p1 = rp(url1);
    let p2 = rp(url2);
    let p3 = rp(url3);
    Promise.all([p1, p2, p3]).then(results => {
        // construct full response from the results array
        req.send(fullResponse);
    }).catch(err => {
        res.status(500).send(err.message);
    });

});


app.listen(80);
<小时/>

编辑 2020 年 1 月 - request() 模块处于维护模式

仅供引用,request 模块及其衍生产品,如 request-promise现在处于维护模式,不会积极开发以添加新功能。更多推理可以阅读herethis table 中有一个替代方案列表对每一项进行一些讨论。我一直用got()我自己,它从一开始就使用 Promise 构建,并且使用起来很简单。

关于javascript - 如何在 NodeJS/Express API 中进行多个异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42933030/

相关文章:

javascript - 你能在 HTML 标签上同时使用 async 和 defer 属性吗?

Javascript/Jquery 使 Anchor 链接到特定类的第一个实例......?

javascript - 类型错误 : Callback is not a function with asyncJS in nodeJS

javascript - 如何在 React 中使用 fetch 和表单数据来发布对象?

javascript - jQuery javascript 作用域问题

javascript - 如何在 IMPACTJS 中反转动画

node.js - Socket IO WebSocket 请求被公司防火墙阻止。

node.js - google.gmail() 给出错误 TypeError : google. gmail 不是函数?

node.js - 如何禁用 Jest `console.log` 标签

node.js - Socket.io 保存动态房间并保持客户端连接 Node JS