使用Express,我使用.map创建一个API调用数组,其结果我想组合成一个响应对象.由于每个调用使用不同的查询参数,我想使用查询参数作为响应对象的键.
我使用axios创建GET请求,它返回一个promise,然后我使用axios.all等待所有的promises解析.
问题是,在承诺解决之后,我不再能够访问用于创建它们的变量.如何将这些变量附加到承诺中供以后参考?
这是API:
router.get('/api',(req,res) => { const number = req.query.number; res.json({ content: "Result for " + number }); });
这是我试图结合结果的地方:
router.get('/array',async (req,res) => { res.locals.payload = {}; const arr = [1,2,3,4,5]; const promises = arr.map(number => { return axiosInstance.get('/api',{ params: { number: number } }) }); const results = await axios.all(promises); results.map(r => { // number should match original,but I no longer have // access to the original variable number = 1; res.locals.payload[number] = r.data; }); res.json(res.locals.payload); });
GET on / array的结果:
{ "1": { "content": "Result for 5" } }
创建Promise对象以保存密钥时,我该怎么办?