1569044682 发表于 2022-8-13 20:24:58

js如何处理异步函数

问题:一个数组arr里的每一个元素需要通过一个函数process进行处理
这个process函数里面含有处理图片的异步操作,这个函数有一个参数一个返回值
如何对arr数组进行遍历,使res数组里的值为process的返回值


var res = []
      var arr = ['file1', 'file2', 'file3']

      var process = function(e) {
            /*
                一些异步的处理图片的操作
                ee = e + 1
            */
            return ee
      }

      arr.forEach(function(item, i) {
            var img = process(item)
            res.push(img)
      })

当初约定 发表于 2022-8-13 20:24:59

楼主可以尝试用async 和await 详情可以看看这篇文章https://blog.csdn.net/weixin_42671417/article/details/108667140

1569044682 发表于 2022-8-14 23:59:24

用了一个循环定时器和一个promise解决了问题,想了好久问题是解决了,但是可能还会有更好的解决办法
new Promise(function(resolve, rej) {
    var res = []
    var arr = ['file1', 'file2', 'file3']

    arr.forEach(function(item, i) {
      ALLPIC++; // 得到arr 的长度
      process(item)
    })

    function process(e) {
      /*
            一些异步的处理图片的操作(onload)
      */
      ee = e + 1
            // 处理完后
      HAVEFINISH++
      res.push(ee)
      return;
    }

    var wait = setInterval(function() {

      if (ALLPIC == HAVEFINISH) {
            clearInterval(wait)
            resolve(self.arrFiles)
      }
    }, 1000);
})
页: [1]
查看完整版本: js如何处理异步函数