Как мне заставить мой Promise.all(promiseArray).then()
затем вызвать обратный вызов?
Демо: https://codesandbox.io/s/white-sea-wxkdh
import "./styles.scss";
import o from "./letters/0.svg";
import i from "./letters/1.svg";
import a from "./letters/4.svg";
import d from "./letters/d.svg";
import g from "./letters/g.svg";
import m from "./letters/m.svg";
import h from "./letters/h.svg";
import r from "./letters/r.svg";
import n from "./letters/n.svg";
import w from "./letters/w.svg";
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const arena = 500;
const padding = 60;
const edge = arena - padding;
ctx.beginPath();
ctx.lineWidth = "3";
ctx.strokeStyle = "DeepSkyBlue";
const origin = [padding, padding];
ctx.moveTo(...origin);
ctx.lineTo(edge, padding);
ctx.lineTo(edge, edge);
ctx.lineTo(padding, edge);
ctx.lineTo(...origin);
ctx.stroke();
let data = [g, o, o, d, null, m, o, r, n, i, n, g, null, h, a, r, w, o, o, d];
var imgEls = [];
var promiseArray = data.map((item, i) => {
return new Promise((res, rej) => {
let offset = i * 20;
let img = new Image();
let svg = new Blob([item], { type: "image/svg+xml" });
let url = window.URL.createObjectURL(svg);
img.onload = () => {
imgEls.push(img);
ctx.drawImage(img, padding + offset, padding - 19);
window.URL.revokeObjectURL(url);
console.log("loaded");
res(img);
};
img.src = url;
});
});
Promise.all(promiseArray).then(() => console.log(imgEls));