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

将ImageCompressor回调API封装为Async/Await风格的compress函数

封装ImageCompressor为Async函数

没问题!把基于回调的ImageCompressor库封装成支持await调用的async函数非常直观,只需要用Promise把原有的回调逻辑包装起来就行。下面是完整的实现代码:

async function compress(file) {
  return new Promise((resolve, reject) => {
    new ImageCompressor(file, {
      quality: 0.6,
      success(result) {
        resolve(result);
      },
      error(e) {
        reject(e);
      },
    });
  });
}

使用示例

你可以像这样直接用await调用:

try {
  const compressedFile = await compress(file);
  // 处理压缩后的文件
  console.log('压缩成功', compressedFile);
} catch (error) {
  // 捕获压缩过程中的错误
  console.error('压缩失败', error);
}

简单解释

  • 我们创建了一个async函数compress,它会返回一个Promise对象(async函数默认会包装返回值为Promise,但这里我们显式返回一个Promise来处理回调逻辑)。
  • 在Promise内部,我们初始化ImageCompressor,并把原有的success回调改为resolvePromise,error回调改为rejectPromise。
  • 这样一来,外部就可以用await语法来等待压缩完成,同时用try/catch优雅地处理错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:49:12