Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中由异步函数返回时数组不可iterable_Javascript_Arrays_Api_Asynchronous_Async Await - Fatal编程技术网

在JavaScript中由异步函数返回时数组不可iterable

在JavaScript中由异步函数返回时数组不可iterable,javascript,arrays,api,asynchronous,async-await,Javascript,Arrays,Api,Asynchronous,Async Await,我正在一个项目中使用vuex。在商店里,我做了一个函数,从一个ID数组返回所有用户的信息,形成一个API。大概是这样的: async function getUsersdata(userIds){ let userData = new Array() userIds.forEach(async (id) => { const url = baseUrl + id + '/' const data = await getUserDetails(url) use

我正在一个项目中使用vuex。在商店里,我做了一个函数,从一个ID数组返回所有用户的信息,形成一个API。大概是这样的:

async function getUsersdata(userIds){
  let userData = new Array()
  userIds.forEach(async (id) => {
    const url = baseUrl + id + '/'
    const data = await getUserDetails(url)
    userData.push(data)
  })
  return userData 
}
   
稍后我使用这个函数,当我尝试对数组执行foreach时,该函数返回forech不起作用。但如果控制台记录整个阵列,则阵列显示正确

let Users = await getUsersdata(idArray)
console.log(await Users)
Users.forEach(User => console.log(User.name))


另外,当我尝试控制台记录数组长度时,它返回未定义或0,当我使用.sort()或.map()等函数时,它也不会执行。

异步等待在
forEach
内部不起作用,因此您应该使用
for
迭代器

async function getUsersdata(userIds){
  let userData = new Array()
  for(var i=0; i<userIds.length; i++) {
    const id = userIds[i]
    const url = baseUrl + id + '/'
    const data = await getUserDetails(url)
    userData.push(data)
  }
  return userData 
}

异步函数getUsersdata(userid){ 让userData=newarray()
对于(var i=0;iShowing
for of
,这里似乎更优越,并使代码更接近原始代码。还有一些原因。