前景提要
昨天想要实现个打印网页为 PDF 的功能,顺便学习 TypeScript 和 Nest.js 。 遇到了这些问题: 方法的返回值类型定为 Promise<Buffer> ,但也有可能返回 puppeteer 的 Error ,这时候返回值该咋写,也没错误提示 page.goto()方法定了 5 秒的 timeout,但还是有可能触发超时错误,这个该咋办,真实浏览器响应很快 一堆 await 的代码该如何组织,错误该如何处理?
附上代码: async generatePDFFromURL(url: string): Promise<Buffer> { return new Promise<Buffer>(async (resolve, reject) => { const browser = await puppeteer.launch(), page = await browser.newPage(); try { await page.goto(url, { timeout: 5000, }); } catch(error) { reject(error); } const pdf = await page.pdf({ format: 'A4', }); await browser.close(); resolve(pdf); }); }