Return results of sync promises in the same order they were given
This commit is contained in:
parent
0550079bfc
commit
aabc102abb
1 changed files with 7 additions and 6 deletions
11
mithril.js
11
mithril.js
|
|
@ -427,11 +427,11 @@ Mithril = m = new function app(window) {
|
||||||
}
|
}
|
||||||
m.sync = function(args) {
|
m.sync = function(args) {
|
||||||
var method = "resolve"
|
var method = "resolve"
|
||||||
function synchronizer(resolved) {
|
function synchronizer(pos, resolved) {
|
||||||
return function(value) {
|
return function(value) {
|
||||||
results.push(value)
|
results[pos] = value
|
||||||
if (!resolved) method = "reject"
|
if (!resolved) method = "reject"
|
||||||
if (results.length == args.length) {
|
if (--outstanding == 0) {
|
||||||
deferred.promise(results)
|
deferred.promise(results)
|
||||||
deferred[method](results)
|
deferred[method](results)
|
||||||
}
|
}
|
||||||
|
|
@ -440,9 +440,10 @@ Mithril = m = new function app(window) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var deferred = m.deferred()
|
var deferred = m.deferred()
|
||||||
var results = []
|
var outstanding = args.length
|
||||||
|
var results = new Array(outstanding)
|
||||||
for (var i = 0; i < args.length; i++) {
|
for (var i = 0; i < args.length; i++) {
|
||||||
args[i].then(synchronizer(true), synchronizer(false))
|
args[i].then(synchronizer(i, true), synchronizer(false))
|
||||||
}
|
}
|
||||||
return deferred.promise
|
return deferred.promise
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue