Add support for async/await using Babel

For proof-of-concept, this patch converts a couple of `Promise` returning methods to use `async` instead.
Please note that the `generic` build, based on this patch, has been successfully testing in IE11 (i.e. the viewer loads and nothing is obviously broken).

Being able to use modern JavaScript features like `async`/`await` is a huge plus, but there's one (obvious) side-effect: The size of the built files will increase slightly (unless `SKIP_BABEL == true`). That's unavoidable, but seems like a small price to pay in the grand scheme of things.

Finally, note that the `chromium` build target was changed to no longer skip Babel translation, since the Chrome extension still supports version `49` of the browser (where native `async` support isn't available).
This commit is contained in:
Jonas Jenwald 2018-07-30 13:58:09 +02:00
parent 4ea663aa8a
commit 099ed08852
13 changed files with 159 additions and 179 deletions

View file

@ -453,16 +453,16 @@ PDFNetworkStreamFullRequestReader.prototype = {
return this._headersReceivedCapability.promise;
},
read: function PDFNetworkStreamFullRequestReader_read() {
async read() {
if (this._storedError) {
return Promise.reject(this._storedError);
throw this._storedError;
}
if (this._cachedChunks.length > 0) {
var chunk = this._cachedChunks.shift();
return Promise.resolve({ value: chunk, done: false, });
return { value: chunk, done: false, };
}
if (this._done) {
return Promise.resolve({ value: undefined, done: true, });
return { value: undefined, done: true, };
}
var requestCapability = createPromiseCapability();
this._requests.push(requestCapability);
@ -534,14 +534,14 @@ PDFNetworkStreamRangeRequestReader.prototype = {
return false; // TODO allow progressive range bytes loading
},
read: function PDFNetworkStreamRangeRequestReader_read() {
async read() {
if (this._queuedChunk !== null) {
var chunk = this._queuedChunk;
this._queuedChunk = null;
return Promise.resolve({ value: chunk, done: false, });
return { value: chunk, done: false, };
}
if (this._done) {
return Promise.resolve({ value: undefined, done: true, });
return { value: undefined, done: true, };
}
var requestCapability = createPromiseCapability();
this._requests.push(requestCapability);