最近项目遇到一个奇怪的问题:
主页面调用引用js文件中的方法A,返回一个数组,再拿着数组A调用引用js文件中的方法B。
在编写调试过程中前后台都加了断点进行调试,没有问题,正常执行。但是,当我把断点取消之后在执行就出现问题了!
问题分析:
由于我在方法A中使用了for循环,循环需要时间,刚好这又是一个异步的方法,导致方法A还未执行完毕,就向下继续执行方法B了,方法B需要方法A执行后返回的数组A,但此时数组A还为完全返回,导致方法B执行失败。
尝试了几种方法都无法解决问题,后来无意中看到了一种方式,添加一个休眠方法,
休眠方法如下:
// 休眠方法
sleepFun(abc) {
return new Promise((res) => {
return setTimeout(() => {
res(abc)
}, 1000)
})
}
在方法A的for循环中调用这个休眠方法
async uploadChunks() {
for (var i = 0; i < 3; i++) {
const bcd = await this.sleepFun(i);//调用休眠方法
console.log('index---', bcd);
后续要执行的代码
}
},
添加完上述休眠方法之后,取消所有断点执行了几遍,都有正常运行。
这个方式可能不是最优的解决方案,但至少目前问题得以解决了。各位大佬如果还有更好的解决方式还请多多指教!!!
借鉴博客:
https://blog.csdn.net/weixin_44786530/article/details/128115434
版权声明:本文为smart_reed原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。