JavaScript 中的 `map` 和 `for` 循环在处理 Promise 返回值时有何区别?

JavaScript 中的 `map` 和 `for` 循环在处理 Promise 返回值时有何区别?

javascript 中 for map 返回 promise 时的不同表现

在使用 javascript 中的 map 方法遍历一个数组时,它会创建一个新的数组,其中每个元素都是原始数组中元素经过回调函数的处理结果。而 for 循环会逐个遍历数组中的元素,并执行循环体中定义的代码。

当你想要返回一个 promise 时,需要考虑 map for 的不同行为。

在你的例子中,使用 map 版本返回 undefined 而不是图片数据,是因为 result.map 创建了一个新的数组,而 for 循环对原始数组进行逐个处理。为了在 map 版本中正确返回图片数据,可以将回调函数的返回值赋给 mappedresult 变量,然后使用 find 方法返回数组中第一个非 undefined 的元素。

代码如下:

// getCapture函数内部
const mappedResult = result.map(m => {
    if (m.name === '整个屏幕') {
      console.log(m)
      let str = m.thumbnail.crop({x: 0, y: 0, width: 1000, height: 1000})
      const imgStr = str.toDataURL()
      return imgStr
    }
    return undefined;
 });
 return mappedResult.find(imgStr => imgStr !== undefined);

以上就是JavaScript 中的 `map` 和 `for` 循环在处理 Promise 返回值时有何区别?的详细内容,更多请关注www.sxiaw.com其它相关文章!