就这点 就是 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
函数来处理订单数据,并通过回调函数将结果返回。最终,在所有订单处理完成后,通过回调函数返回结果给客户端。