gpt4 book ai didi

javascript - 总结nodejs上http返回的最好方法

转载 作者:行者123 更新时间:2023-12-01 00:39:31 25 4
gpt4 key购买 nike

必须接受多个 SOAP 请求,并且需要一起取回所有返回。

我现在做的是:

    for (let this_target of list_of_target)
{
const req = http.request(conn, (res) => {
let data='';
res.on('data', (chunk) =>
{
data += chunk;
});
res.on('end', () =>
{
... do some stuff with the result of the SOAP request ...

my_external_array.concat (myData);
});
});

var om_req={
'CT_Get' : {
...some extra stuff...
'target': this_target
...some extra stuff...
}
};

var builder=new xml2js.Builder();

var om_req_xml=builder.buildObject(om_req);

req.write(om_req_xml);

req.end();
}

好的

我知道我无法检索此循环之外的数据,因为回调。

奇怪的是(或没有),如果我在 my_external_array.concat (myData); 之后添加一个 console.log(my_external_array) ,脚本会显示添加每次处理后的项目...但是,如果我将相同的 console.log 放在回调之外(任何地方),我不会有任何返回... :(

这将是处理所有这些请求的最佳方法,将结果连接到一个数组中并将其传递给另一个函数。我需要此请求中的所有值来汇总它们并将汇总结果保存到数据库中

抱歉没有更详细地介绍我正在做的事情......

最佳答案

这是异步操作的常见问题。您可以使用 Promises解决您的问题。

以下代码片段可让您了解如何使用 Promises:

const promisesList = [];
for (let this_target of list_of_target) {
promisesList.push(new Promise((resolve, reject) => {

// Your request code...

// Make sure to resolve the promise with your transformed data, eg.:
/*
res.on('end', () => {
// ... do some stuff with the result of the SOAP request ...

resolve(myData);
});
*/

}));
}

// Process all the promises
Promise.all(promisesList).then(results => {
// `results` is an array which contains all the resolved values.
// This would be equivalant to `my_external_array` from your old code.

console.log(results);
});

关于javascript - 总结nodejs上http返回的最好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57824110/

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