если у меня есть 6 узлов, из которых два узла не существуют, поэтому для этих двух я получу ошибку. Поэтому ppt не будет загружен. Как обработать этот случай? Что я ищу здесь, так это то, что код выделение жирным шрифтом должно выполняться только после того, как последнее обещание было разрешено
let pres = new pptxgen();
nodes.forEach((node, index) => {
let slide = pres.addSlide();
let nodeRef = document.getElementById(node);
domtoimage.toPng(nodeRef).then((dataUrl) => {
let base64Code = dataUrl.split(":").pop();
slide.addImage({
data: base64Code
});
**if (index == nodes.length - 1) {
setTimeout(() => {
pres.writeFile(pptName);
}, 2000);
}**
});
});
ПРИМЕЧАНИЕ. - Возьмем пример наличия 6 узлов, где для последнего узла вы получаете nodeRef = null, поскольку его нет в HTML DOM.
В настоящее время у меня есть решение, которое ниже, но где-то я не удовлетворен этим подходом и ищу идеальный подход, при котором после выполнения последнего обещания я генерирую ppt: -
public exportToPpt(nodes: Array<string>, pptName: string) {
var count = 0;
let pres = new pptxgen();
nodes.forEach((node, index) => {
let nodeRef = document.getElementById(node);
domtoimage.toPng(nodeRef).then((dataUrl) => {
count++;
let slide = pres.addSlide();
let base64Code = dataUrl.split(":").pop();
slide.addImage({
data: base64Code,
});
if (count == nodes.length) {
pres.writeFile(pptName);
}
}).catch((error)=>{
count++;
});
});
}}