就这点 就是 100个并发,同时请求 函数B 但他不是同时过去的,,只能一次过去7、8个这样子。麻烦看下
app.post('/batch_self_rate', (req, res) => { try { Orders = req.body; // console.log(Orders); // res.send({ result: Orders }); // return; async.mapLimit(Orders, 100, function (order, callback) { //allrate.post_rate(order, callback, connection); allrate.post_rate(order, callback); }, function (err, result) { if (err) console.log(err); res.send({ result: result }); }); } catch (error) { console.log(error); res.send({ "code": 400, "msg": "试算价格失败"+error.messsage }); } })
看看这个呢 then 以后再 res.send 试试呢 https://stackoverflow.com/a/57678842 思路就是请求没发完 不能res.send
此答案来自钉钉群“阿里函数计算官网客户"
根据您提供的代码,您正在使用Node.js编写一个接口,该接口接收一个包含100个订单的请求,并以并发方式请求函数B进行处理。然而,您提到函数B并不会同时接收到所有订单,而是一次处理7到8个订单。
这样的情况可能是由于您在使用async.mapLimit函数时指定了并发限制为100,这意味着最多会同时处理100个订单。但是,函数B的实际实现可能无法同时处理100个订单,而只能处理较少数量的订单。
如果您希望函数B能够同时处理更多的订单,您可以尝试逐步增加并发限制值,例如逐渐增加到20、50、80,以找到最佳的同时处理数量。这可以通过在async.mapLimit函数的第二个参数中逐渐增加限制值来实现。
另外,请确保在函数B的实现中没有其他限制或阻塞操作,以确保它能够并行处理尽可能多的订单。
希望这些提示对您有所帮助!如果您有任何其他疑问,请随时提问。
根据您提供的代码,这段代码是一个使用Express框架编写的Node.js后端接口。在/batch_self_rate
路由中,它接收一个POST请求,并从请求体中获取到Orders
参数。
然后,它使用async.mapLimit
函数对Orders
数组进行并发处理,限制最大并发数为100。每次迭代都会调用allrate.post_rate
函数来处理订单数据,并通过回调函数将结果返回。
最终,在所有订单处理完成后,通过回调函数返回结果给客户端。
同学你好,根据你提供的代码,虽然你使用了async异步方法,但是async.mapLimit函数用的方式不对,所以每次只能请求一个函数。
改进建议:
app.post('/batch_self_rate', (req, res) => {
const orders = req.body;
const batchSize = 100;
const batchIds = [];
for (let i = 0; i < orders.length; i++) {
batchIds.push(orders[i].batch_id);
}
// 同时请求多个函数B
async.mapLimit(batchIds.map(batchId => {
return allrate.post_rate(batchId, (err, result) => {
if (err) {
console.log(err);
res.send({ code: 400, msg: "试算价格失败" + err.message });
} else {
console.log(result);
res.send({ result: result });
}
});
}), (err, results) => {
if (err) {
console.log(err);
res.send({ code: 400, msg: "试算价格失败" + err.message });
} else {
res.send({ result: results });
}
});
});
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。