繁体   English   中英

如何等待 Vue function 完成异步/等待?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM