You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

异步函数返回空值求助:调用函数无法获取有效返回值

问题修复:异步函数返回空值的解决方法

问题根源

你的readFile函数中使用forEach循环执行异步的Tesseract图片识别操作,但forEach不支持等待异步任务完成。函数会直接跳过异步操作,执行到return texts语句,此时texts还是初始的空字符串,导致返回值为空。

修复方案

改用map结合Promise.all来处理所有异步任务,确保所有识别完成后再返回拼接好的文本:

async function Print(){
  var result = await readFile();
  console.log(result);
}
async function readFile() {
  const FileName = ['g.png','g2.png'];
  // 将每个文件的识别操作转为Promise,存入数组
  const textPromises = FileName.map(async (fileName) => {
    const { data: { text } } = await Tesseract.recognize(fileName, 'ara', { logger: m => console.log(m) });
    return text;
  });
  // 等待所有识别任务完成,获取所有文本结果
  const allTexts = await Promise.all(textPromises);
  // 拼接所有文本并返回
  return allTexts.join('');
}

修复说明

  • map会遍历文件列表,为每个文件生成一个异步识别的Promise,返回包含所有Promise的数组
  • Promise.all会等待数组中所有Promise执行完成,返回一个包含所有识别结果的数组
  • 最后用join('')将所有文本拼接成一个字符串返回,确保返回值是所有图片识别后的完整文本

内容的提问来源于stack exchange,提问作者Mohalzurghni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 09:56:03