Я пытаюсь сгенерировать pdf-файл из конечной точки, функция showPDF имеет параметр ID для Product и генерирует pdf в качестве вывода.
Я пытался объявить Promise для получения поток байтов из этой конечной точки:
showPdf(rowData: Product) {
console.log("ID = >" + rowData.id);
let promise = new Promise((resolve, reject) => {
let apiURL = this.apiUrl + "/api/products/get/pdf/"+rowData.id;
this.http.get(apiURL)
.toPromise()
.then(
res => { // Success
this.results = String(res);
console.log("Bytes=> " + res);
resolve();
},
msg => { // Error
reject(msg);
}
);
});
const bytes = this.results;
const linkSource = 'data:application/pdf;base64,'+ bytes;
const downloadLink = document.createElement("a");
const fileName = "Report.pdf";
downloadLink.href = linkSource;
downloadLink.download = fileName;
console.log("downloadLink = >" + downloadLink);
downloadLink.click();
}
Проблема в том, что ссылка для скачивания выполняется до получения результата от Promise.
Например, при вызове showPDF (942) я получаю неопределенное значение ссылки для скачивания
![enter image description here](https://i.stack.imgur.com/ooudX.png)
При вызове showPDF для того же идентификатора или другого значения идентификатора генерируется PDF, но из предыдущего значения потока байтов получил от Обещания.