我有一个功能
transformAllUser = async (userList): Promise<any> => {
return new Promise((resolve, reject) => {
const userListArray = [];
userList.forEach((user) => {
// do something like or something else
userListArray.push({obj : user})
})
resolve(userListArray )
})
}
并获得该值:
const val = await transformAllUser(userList);
console.log(val) // its empty.
我得到的是一个空数组,我在这里在做什么错,以便我的代码不等待forEach
完成
答案 0 :(得分:0)
您不必为此使用async
await
。如果for循环中的代码不会进行任何异步操作,则无需使用async
await
。
像这样简单的事情应该对您有用。
const transformAllUser = (userList) => {
const userListArray = [];
userList.forEach((user) => {
userListArray.push({
obj: user
})
})
return userListArray;
}
const userList = [{name: 'john'}, {name: 'doe'}];
const val = transformAllUser(userList);
console.log(val);
如果您仍然想使用async
await
,则需要以正确的方式使用它。 await
只能存在于async
函数内部。
const transformAllUser = async (userList) => {
return new Promise((resolve, reject) => {
const userListArray = [];
userList.forEach((user) => {
userListArray.push({ obj: user })
// if you have any asyncronous actions here, say, API call or promise, you will await it
// await makeAsyncCall()
})
resolve(userListArray);
})
}
const userList = [{
name: 'john'
}, {
name: 'doe'
}];
transformAllUser(userList).then(val => {
console.log(val);
});
答案 1 :(得分:0)
这是您可以使用的解决方案。
const transformAllUser = async (userList) => userList.map(user => ({obj: user}))
const users = [{name : "1"}, {name : "2"}, {name : "3"}]
(async () => {
const transformedUsers = await transformAllUser(users)
console.log(transformedUsers)
})()
答案 2 :(得分:-1)
plugins:{
allure:{
enabled:true,
},
uniqueScreenshotNames:true,
retryFailedStep:{
enabled:true,
retries:2,
},
},