Я немного схожу с ума от этого, и я надеюсь, что вы мне поможете.
Вариант использования: пользователь указывает свое имя.Когда он нажимает кнопку, запрос отправляется на серверную службу, которая генерирует изображение.Не обновляя страницу, пользователь должен видеть новое созданное изображение.
Поэтому я начал с тега img с предварительным изображением.
<img src="waiting.png" />
Затем, когда пользователь щелкнулКнопка Я выполняю следующую функцию:
function loadingImage() {
return new Promise(function(resolve, reject) {
var image = new Image();
image.src = userNameForImage;
// This will print something like images/JJ.png
console.log(userNameForImage);
image.onload = function() {
// Here resolve
};
image.onerror = function() {
reject(new Error('Could not load image at ' + userNameForImage));
};
});
}
userNameForImage - путь + имя пользователя + расширение.
Когда я пытаюсь разрешить
resolve(image);
, я получаю эту ошибку: Ошибка: Не удалось загрузить изображение в images / JJ.png
То же самое, если я использую setTimeout ()
setTimeout(() => resolve(image), 10000);
Помните, что изображение создается серверной службой.Так что это асинхронно и занимает некоторое время.Обычно не более 6 секунд.В любом случае, я не могу разрешить операцию после создания и загрузки изображения.
В псевдокоде будет
- Пользователь предоставляет свое имя
- Пользователь нажимает вкнопка
- Функция присоединяет слушателя к img, и создается обещание.
- Запрос сделан на бэкэнд-сервис, который создаст образ.
- После того, как изображениеможет быть загружен (== существует). Обещание должно быть разрешено
- Затем src должен быть обновлен или заменен.
Кто-нибудь может дать какое-нибудь руководство?Я совершенно новый с обещаниями, и я действительно застрял.Спасибо