Javascript 如何使用async/await等待Vue函数完成?

Javascript 如何使用async/await等待Vue函数完成?,javascript,vue.js,Javascript,Vue.js,我有一个在while循环中调用的Vue函数。该函数根据需要循环,总的来说,它会产生所需的结果。问题是该函数的某些区域需要setTimeout,而这些区域在这些循环发生时没有时间完成,对于代码的相关部分,它不会产生期望的结果。“vm.getResults()”函数也是一个异步函数,如果这很重要的话 有没有一种方法可以使用async/await或承诺使while循环等待“vm.getResults()”函数完成,直到它通过下一次迭代 while (i < data

我有一个在while循环中调用的Vue函数。该函数根据需要循环,总的来说,它会产生所需的结果。问题是该函数的某些区域需要setTimeout,而这些区域在这些循环发生时没有时间完成,对于代码的相关部分,它不会产生期望的结果。“vm.getResults()”函数也是一个异步函数,如果这很重要的话

有没有一种方法可以使用async/await或承诺使while循环等待“vm.getResults()”函数完成,直到它通过下一次迭代

               while (i < data.length) {
                    (async function () {
                        async function getRes() {
                            let getPromise = new Promise(function (Resolve, Reject) {
                                vm.getResults()
                                // Can I put something here so it waits until the getResults function is finished?
                                Resolve()
                            });
                            var result = await getPromise
                            return result
                        }
                        getRes()
                    })(i++)
while(i
您的代码中有多个级别的
async
函数,如果您想等待每次迭代完成,则必须对每个函数执行
wait
操作。但是,对于
wait
s
vm.getResults()
的循环,您实际上只需要一个
async
包装器:

const data={length:3}
constvm={getResults:async()=>newpromise(r=>setTimeout(()=>r(newdate()),1000))}
常量循环=异步()=>{
for(设i=0;iloop()
目前,您的整个while循环可以缩短为
while(i
。您既不使用
i
,也不使用
data
vm.getResults()
的返回值。我假设这不是预期的行为?是的,“i”在异步函数中是没有必要的。这是一个输入错误,我会纠正它。