Skip to content

Commit 2a40257

Browse files
authored
Rewrite Promises using async-await (#2881)
1 parent 8fab723 commit 2a40257

5 files changed

Lines changed: 216 additions & 302 deletions

File tree

src/OutputDocument.js

Lines changed: 23 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -20,57 +20,43 @@ class OutputDocument {
2020
* @returns {Promise<Buffer>}
2121
*/
2222
getBuffer() {
23-
if (this.bufferPromise === null) {
24-
this.bufferPromise = new Promise((resolve, reject) => {
25-
this.getStream().then(stream => {
26-
27-
let chunks = [];
28-
let result;
29-
stream.on('readable', () => {
30-
let chunk;
31-
while ((chunk = stream.read(this.bufferSize)) !== null) {
32-
chunks.push(chunk);
33-
}
34-
});
35-
stream.on('end', () => {
36-
result = Buffer.concat(chunks);
37-
resolve(result);
38-
});
39-
stream.end();
40-
41-
}, result => {
42-
reject(result);
23+
const getBufferInternal = (async () => {
24+
const stream = await this.getStream();
25+
return new Promise((resolve) => {
26+
let chunks = [];
27+
stream.on('readable', () => {
28+
let chunk;
29+
while ((chunk = stream.read(this.bufferSize)) !== null) {
30+
chunks.push(chunk);
31+
}
4332
});
33+
stream.on('end', () => {
34+
resolve(Buffer.concat(chunks));
35+
});
36+
stream.end();
4437
});
45-
}
38+
});
4639

40+
if (this.bufferPromise === null) {
41+
this.bufferPromise = getBufferInternal();
42+
}
4743
return this.bufferPromise;
4844
}
4945

5046
/**
5147
* @returns {Promise<string>}
5248
*/
53-
getBase64() {
54-
return new Promise((resolve, reject) => {
55-
this.getBuffer().then(buffer => {
56-
resolve(buffer.toString('base64'));
57-
}, result => {
58-
reject(result);
59-
});
60-
});
49+
async getBase64() {
50+
const buffer = await this.getBuffer();
51+
return buffer.toString('base64');
6152
}
6253

6354
/**
6455
* @returns {Promise<string>}
6556
*/
66-
getDataUrl() {
67-
return new Promise((resolve, reject) => {
68-
this.getBase64().then(data => {
69-
resolve('data:application/pdf;base64,' + data);
70-
}, result => {
71-
reject(result);
72-
});
73-
});
57+
async getDataUrl() {
58+
const data = await this.getBase64();
59+
return 'data:application/pdf;base64,' + data;
7460
}
7561

7662
}

src/OutputDocumentServer.js

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,12 @@ class OutputDocumentServer extends OutputDocument {
77
* @param {string} filename
88
* @returns {Promise}
99
*/
10-
write(filename) {
11-
return new Promise((resolve, reject) => {
12-
this.getStream().then(stream => {
13-
stream.pipe(fs.createWriteStream(filename));
14-
stream.on('end', () => {
15-
resolve();
16-
});
17-
stream.end();
18-
}, result => {
19-
reject(result);
20-
});
10+
async write(filename) {
11+
const stream = await this.getStream();
12+
return new Promise((resolve) => {
13+
stream.pipe(fs.createWriteStream(filename));
14+
stream.on('end', resolve);
15+
stream.end();
2116
});
2217
}
2318

0 commit comments

Comments
 (0)