Javascript 如何使用async/await等待Vue函数完成?
我有一个在while循环中调用的Vue函数。该函数根据需要循环,总的来说,它会产生所需的结果。问题是该函数的某些区域需要setTimeout,而这些区域在这些循环发生时没有时间完成,对于代码的相关部分,它不会产生期望的结果。“vm.getResults()”函数也是一个异步函数,如果这很重要的话 有没有一种方法可以使用async/await或承诺使while循环等待“vm.getResults()”函数完成,直到它通过下一次迭代Javascript 如何使用async/await等待Vue函数完成?,javascript,vue.js,Javascript,Vue.js,我有一个在while循环中调用的Vue函数。该函数根据需要循环,总的来说,它会产生所需的结果。问题是该函数的某些区域需要setTimeout,而这些区域在这些循环发生时没有时间完成,对于代码的相关部分,它不会产生期望的结果。“vm.getResults()”函数也是一个异步函数,如果这很重要的话 有没有一种方法可以使用async/await或承诺使while循环等待“vm.getResults()”函数完成,直到它通过下一次迭代 while (i < data
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
svm.getResults()
的循环,您实际上只需要一个async
包装器:
const data={length:3}
constvm={getResults:async()=>newpromise(r=>setTimeout(()=>r(newdate()),1000))}
常量循环=异步()=>{
for(设i=0;i loop()
目前,您的整个while循环可以缩短为while(i
。您既不使用i
,也不使用data
或vm.getResults()
的返回值。我假设这不是预期的行为?是的,“i”在异步函数中是没有必要的。这是一个输入错误,我会纠正它。