javascript – 在node.js / express.js中从多个异步源构建对象

我很难在网上找到解决问题的方法,希望有人在这里帮助我.我有一个快速路由,为不同的JSON对象执行一些API请求.我想为我的客户端视图构建一个JSON响应,但到目前为止我的所有尝试都会产生先前的请求数据或根本没有数据.

所以我的问题是使用node / express js的JavaScript专家.如何将多个JSON对象源同步到一个单个对象中,以便在一个响应中返回到客户端?你使用的是库还是一些回调魔法?

在此先感谢您的帮助!

解决方法:

Async是用于此目的的更受欢迎的库之一.还有许多其他异步和承诺库可以帮助解决这个问题.根据您的需要,有不同的方法具有不同的行为.我认为系列方法是您所需要的,但请仔细检查文档.

var async = require('async');
var request = require('request');


app.get('endpoint',function(req, res){
    async.series([
        function(callback){request.get('url',callback)},
        function(callback){request.get('url2',callback)},
        function(callback){request.get('url'3,callback)},  
    ],
    function(err,results){
        //handle error

        //results is an array of values returned from each one
        var processedData = {
            a: results[0],
            b: results[1],
            c: results[2]
        };
        res.send(processedDAta)
    })

})

你也可以自己做(并且是学习如何组织你的node.js代码的好习惯).callbackhell是一个很好的编写使用命名函数和模块来组织回调.

这是一种可行的方法. (未测试)

app.get('/endpoint',function(req, res){
    var dataSources = ['url1', 'url2',url3];
    var requestData = [];

    processRequestData = function(){
    //do you stuff here
    res.send(processedData);
    };
    dataSources.forEach(function(dataSource){
        request.get(dataSource,function(err,result){
            //handle error

            requestData.push(result);
            if(requestData.length == dataSources.length){
                processRequestData();
            }
        })
    })
});

相关文章

根据官网 入门 express
java叫接口control什么的app.get.post等等都是请求方式我们可...
为了前端丢进去的时候可以直接判断中间件就是经过了这个就会...
Express 文件的上传和下载
运行命令下载app.js 增加中间件。
基本模板来的 后面用后就有什么加什么都行。