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

  • Post author:
  • Post category:其他


最近项目遇到一个奇怪的问题:

主页面调用引用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 版权协议,转载请附上原文出处链接和本声明。