[英]How to wait for a Vue function to finish with async/await?
我有一个在 while 循环中调用的 Vue function。 function 根据需要循环,总体而言,它会产生所需的结果。 问题是 function 的某些区域需要 setTimeout 并且在这些循环发生时没有时间完成,并且对于代码的相关部分,它不会产生所需的结果。 “vm.getResults()” function 也是异步的 function,如果这很重要的话。
有没有办法我可以使用 async/await 或 promise 来实现它,以便 while 循环等待“vm.getResults()”function 完成,直到它通过下一次迭代?
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++)
您的代码中有多个级别的async
函数,如果您想等到每次迭代完成,则必须await
每个级别。 但是,对于await
vm.getResults()
的循环,您实际上只需要一个async
包装器:
const data = { length: 3 } const vm = { getResults: async () => new Promise(r => setTimeout(() => r(new Date()), 1000)) } const loop = async () => { for (let i = 0; i < data.length; i++) { const date = await vm.getResults() console.log(`result[${i}]`, date) } } loop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.