将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
相关产品推荐
相关产品推荐

