javascript async/await 使用中遇到的问题
项目中有一个数据是二层嵌套数组,数据类型类似这样
questions: [
{
type: 'INPUT',
answer: 'helloworld'
},
{
type: 'SELECT',
answer: '1'
},
{
type: 'GROUP',
sub_questions: [
{
type: 'INPUT',
answer: 'hihi'
},
{
type: 'SELECT',
answer: '2'
}
]}
]
然后我要通过重组数据将这些数据展示出来,但是select显示的值并不是answer,而是将answer传到后端然后拿到的一个结果。
let answer_arr = [];
questions.forEach(async (question) => {
let single_answer = {type: question.type};
if (question.type === 'INPUT') {
single_answer.answer = question.answer;
} else if (question.type === 'SELECT') {
await axios.post('xxxx', {code: question.code}).then(res => {single_answer.answer = res.data.data})
} else if (question.type === 'GROUP') {
single_answer.answer = [];
question.sub_questions.forEach(async (sub_question) => {
let single_sub_answer = {type: sub_question.type};
if (sub_question.type === 'INPUT') {
single_sub_answer.answer = question.answer;
} else if (sub_question.type === 'SELECT') {
await axios.post('xxxx', {code: sub_question.code}).then(res => {single_sub_answer.answer = res.data.data})
single_answer.answer.push(single_sub_answer )
})
}
answer_arr.push(single_answer)
})
期望得到的结果就是
answer_arr = [
{
type: 'INPUT',
answer: 'helloworld'
},
{
type: 'SELECT',
answer: 1对应的值
},
{
type: 'GROUP',
answer: [
{
type: 'INPUT',
answer: 'hihi'
},
{
type: 'SELECT',
answer: 2对应的值
},
]
}
]
但是执行后发现await并没有生效,answer_arr 中 type为SELECT时,并没有answer。。。
是不是async/await用法不对。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这句话await一下
不过await后面要包装成promise
async只能保证这个函数内是同步不能保证这个函数是同步
建议还是用for循环没那么多麻烦