React Native异步函数返回Promise {_u 0, _v 0, _w null, _x null}如何解决
问题根因
Array.map传入异步函数后,返回值是Promise对象组成的数组,而非压缩处理后的结果集合,你直接打印该数组自然会看到Promise实例的内部结构。- 单张调用正常是因为你对单个Promise执行了
await操作等待其完成,批量场景下需要等待所有Promise全部执行完成才能拿到完整结果。
修复后的批量压缩代码
使用Promise.all等待所有压缩任务执行完成即可拿到最终结果:
const compressImages = async (items) => { const list = await Promise.all( items.map(item => compressFunction(item)) ) console.log(list) // 后续可直接使用list中的压缩结果 }
可选优化:兼容单张压缩失败场景
如果需要避免某一张图片压缩失败导致整个批量任务崩溃,可以给单个压缩任务增加错误捕获逻辑:
const compressImages = async (items) => { const list = await Promise.all( items.map(async item => { try { return await compressFunction(item) } catch (err) { console.error('单张图片压缩失败:', err) // 可按需返回错误标识,后续自行过滤无效结果 return null } }) ) // 过滤压缩失败的项 const validResultList = list.filter(Boolean) console.log(validResultList) }
内容的提问来源于stack exchange,提问作者hegonen
相关产品推荐
相关产品推荐

