gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 23:38:36 26 4
gpt4 key购买 nike

我很难在网上找到问题的解决方案,希望这里有人可以帮助我。我有一个快速路由,它对不同的 JSON 对象执行一些 API 请求。我想为我的客户端 View 构建一个 JSON 响应,但到目前为止我的所有尝试要么产生以前的请求数据,要么根本没有数据。

所以我的问题是使用 node/express js 的 JavaScript 专业人士。如何将多个 JSON 对象源同步到一个对象中,以便在一个响应中返回给客户端?您是否使用了库或一些回调魔法?

在此先感谢您提供的所有帮助!

最佳答案

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

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

关于javascript - 在 node.js/express.js 中从多个异步源构建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25344045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com