取代承诺
我有一段这样的代码:
export default function imageProcessing() {
return async function (ctx, next) {
/* some code is here */
const request = new Promise(resolve => protocol.get(imageUrl, resolve));
const result = await request;
if (result.statusCode >= 400) {
ctx.status = result.statusCode;
return next();
}
ctx.status = result.statusCode;
/* some more code in between */
ctx.type = `image/${format}`;
ctx.body = result.pipe(transformer);
};
}
Eslint向我展示了一些错误(因为不允许承诺)。错误:
ESLint:Opera Mobile 12,Opera Mini all,IE Mobile 10,IE 9,Blackberry Browser 7(compat / compat)不支持Promise
我无法修改/避免这种情况,因为它是严格禁止的。我怎样才能取代Promise?有人可以纠正这个吗?
回答如下:大概,
- ESLint配置更改需要您项目的小时。
- ESlint消息是正确的,Promises在这些浏览器中不可用,但是'export',async / await和template literal(
image/${format}
)也是如此。你也需要删除它们。 - 如果在任何情况下您想要替换代码,请检查Babel-Repl,粘贴代码并检查替代代码。 (根据可读性,这将是最差的代码)
- 正如所建议的那样,给予转型。这是克服此兼容性问题的最佳方法,但也会要求您更改ESlint设置。
- 直接转换而不理解以上4点, qazxsw poi
同样,这也容易出现容易出错的未来。请关注#1以解决此问题。