首页 > 解决方案 > 两个foreach或for循环内部的axios无法访问外部数据

问题描述

var datavals = () =>{
var s = [];
var val = {};
  for (let i = 0; i < query.length; i++) {
    for (let j = 0; j < txnName.length; j++) {
      axios.get(`${BASE_URL}/gsa/${query[i]}/${req.params.id}?txnName=${txnName[j]}`).then(res => {
        val.type = txnName[i]
        val.value = res.data;
        s.push(val)
      }).catch(e=>{console.error(e)});    
    }
  }
  return s;
}

无法在外部访问 s 的值 如何获得 s 的这个值,或者是否有任何替代方法可以编写?另外,由于 axios 是一个异步操作,我得到了多个值,不确定如何在 for-each 循环中处理多个 axios 调用

query数组的长度为 6,并且txnName是一个长度为 8 的数组。当我运行 axios 调用时,理想情况下,我应该得到 48 个响应以及添加到 s[] 数组中的 txnName,它应该看起来像

[
{type : 'a1', value: [object]},
{type : 'a2', value: [object]},
...{type : 'a48', value: [object]}
]

哪里a1...a48是基于txName项目。当我运行我的应用程序时,我会在数组中随机获得 0 - 500 多个项目,而不是 48 个,有时应用程序会崩溃。s[] 也应该可用 res.render('template/page', {data: dataVals()})

标签: javascript

解决方案


推荐阅读