- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下调整图像大小的函数。
promise
应该在我的代码的 onload
部分中解析,但由于某种原因它没有......
import Pica from 'pica';
const pica = new Pica();
export default ({ src, size }) =>
new Promise((resolve, reject) => {
const [width, height] = size.split('x');
const from = new Image();
const to = document.createElement('canvas');
const options = {
width,
height,
};
from.onload = async () => {
try {
const canvas = await pica.resize(from, to, options);
resolve(canvas);
} catch (e) {
reject(e);
}
};
from.src = src;
});
我使用此函数来获取一个图像的不同大小版本的数组。我使用 Promise.all()
来实现此目的。
这是我调用此函数的代码:
...
const img = ...
sizes.map(size => {
promisesArray.push(resizeImage({ img, size }));
});
Promise.all(promisesArray).then(data => console.log(data))
我尝试过 console.log(resizeImage({ img, size }))
,并得到了无法解析的 pending
状态的 promise 。
我还假设这是由于 Pica
造成的。于是我尝试简化一下功能,但也没成功:
// no extra code
export default ({ src, size }) =>
new Promise((resolve, reject) => {
const from = new Image();
from.onload = () => {
// what's wrong here?
resolve('hello');
};
from.src = src;
});
最佳答案
除了列出 onload
之外,您还应该始终为 onerror
添加监听器,因为 Image
可能无法加载。
如果您将 console.log
添加到 onerror
回调中,我怀疑您会发现您传入了无效的 src
您的一个或多个调用导致图像加载失败。
作为演示如何连接 onerror
回调的示例(忽略与您的问题无关的调整大小代码):
const loadImg = (src) => new Promise((resolve, reject) => {
const img = new Image();
img.onload = () => resolve(img);
img.onerror = (err) => reject(err);
img.src = src;
});
// This should succeed
loadImg('data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7').then(
() => console.log('Image loaded!'),
() => console.log('Image failed!'),
);
// This will fail
loadImg('invalid-url').then(
() => console.log("How did that load?"),
() => console.log("That wasn't an image!"),
);
关于javascript - 为什么我的 promise 没有兑现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48794749/
我在 MDN 中阅读有关 javascript 的内容时遇到了谈论 promise 的部分,但不明白它的含义。 代码非常简单,但是我不明白警告这个词。兑现 promise 是什么意思?隐式返回是什么意
嗨,我是新来的,如果我的问题表述不当,我深表歉意。 我想在全局函数中定义来自 axios js 的 promise 。在这里,我想全局处理/捕获 401 状态并注销用户。我不想在每个查询中都处理它。
为了变得对移动设备友好,我实现了@cch 友善建议的媒体查询。它有效地隐藏了“aside”(侧边栏),但未能将“文章”(main)扩展到所有浏览器和所有设备上产生的空白区域。我做错了什么? CSS 后
我四处寻找,但无法找到答案。我想做一个加权 geom_bar 图,上面覆盖着一条垂直线,显示每个方面的整体加权平均值。我无法做到这一点。垂直线似乎是应用于所有方面的单个值。 require('ggpl
当 QTimer 回调中引发异常时,我遇到了 python 崩溃的问题。下面是一个小例子,展示了这一点 import sys from PyQt5.QtCore import (QTimer, pyq
我使用 mongoose 和 bluebird 作为 promise 框架。每次我使用“保存”或“删除”时,我都会收到此错误: Warning: a promise was created in a
我正在尝试像这样在我的 docker-compose.yml 文件中定义一个容器 - gitea: image: gitea/gitea:latest depends_on: - ma
我正在开发一个简单的 Ember 应用程序,它从 API 检索所有语言字符串。我已经使用 translate() 设置了服务方法,并将该服务注入(inject)到帮助程序中。问题是我想使用的属性在助手
我是一名优秀的程序员,十分优秀!