mirror of
https://github.com/zen-browser/pdf.js.git
synced 2025-07-10 10:15:37 +02:00
Use promises to track completion of decoding.
This commit is contained in:
parent
7d1cddf371
commit
683f64d54f
3 changed files with 75 additions and 46 deletions
28
src/util.js
28
src/util.js
|
@ -217,7 +217,33 @@ var Promise = (function promise() {
|
|||
}
|
||||
this.callbacks = [];
|
||||
};
|
||||
|
||||
/**
|
||||
* Builds a promise that is resolved when all the passed in promises are
|
||||
* resolved.
|
||||
* @param Array promises
|
||||
* @return Promise
|
||||
*/
|
||||
Promise.all = function(promises) {
|
||||
var deferred = new Promise();
|
||||
var unresolved = promises.length;
|
||||
var results = [];
|
||||
if (unresolved === 0) {
|
||||
deferred.resolve(results);
|
||||
return deferred;
|
||||
}
|
||||
for (var i = 0; i < unresolved; ++i) {
|
||||
var promise = promises[i];
|
||||
promise.then((function(i) {
|
||||
return function(value) {
|
||||
results[i] = value;
|
||||
unresolved--;
|
||||
if (unresolved === 0)
|
||||
deferred.resolve(results);
|
||||
};
|
||||
})(i));
|
||||
}
|
||||
return deferred;
|
||||
};
|
||||
Promise.prototype = {
|
||||
hasData: false,
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue