前台for循环等待1s后执行后续内容

6 篇文章 0 订阅
2 篇文章 0 订阅
博客讲述了在前端开发中遇到的一个问题,即异步方法导致方法A未执行完毕,方法B就执行,从而引发错误。作者通过在方法A的for循环中引入一个异步休眠方法解决了这个问题,确保方法A执行完成后再执行方法B。虽然这不是最优方案,但目前能稳定运行。博客探讨了异步控制和调试技巧。
摘要由CSDN通过智能技术生成

最近项目遇到一个奇怪的问题:
主页面调用引用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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值