微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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();
            }
        })
    })
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐