В настоящее время я работаю с потоками в Node.js, где я беру изображение из своей БД, используя node-canvas
, чтобы внести некоторые изменения в изображение, а затем сохраняю изображение локально в моем проекте. Я хочу быть абсолютно уверен в том, что трубопровод полностью готов, прежде чем сохранять изображение (чтобы не получить обрезанные изображения). Как я могу это сделать?
Моя попытка
async function makeCanvas(img, code, channel) {
const canvas = createCanvas(900, 1375);
const ctx = canvas.getContext("2d");
ctx.fillStyle = "#000000";
ctx.fillRect(0, 1255, 900, 120);
// ctx.fillRect(0, 0, 900, 1375);
let image = await loadImage(img);
ctx.font = "bold 100px 'Unisans Heavy'";
ctx.textAlign = "center";
ctx.fillStyle = "#FFFFFF";
ctx.fillText(`${code}`, 435, 1350);
const writeable = fs.createWriteStream(`./temp/${channel.id}.png`);
const readable = canvas.createPNGStream();
const pipeConnect = await readable.pipe(writeable);
let ended;
let path;
await readable.on("end", () => {
ended = readable["_readableState"].ended;
});
if (ended) {
path = writeable.path;
} else {
console.log("File not ready.");
}
return path;
}
Я пытаюсь переназначить переменную ended
, чтобы узнать, закончилась ли операция, и если он закончен, затем что-то с ним делаем. Но похоже, что я не могу переназначить значение ended
в прослушивателе событий. Что я мог сделать вместо этого?