prevent re-resolving
This commit is contained in:
parent
92f85fa9ea
commit
7f35cf31f2
2 changed files with 58 additions and 2 deletions
|
|
@ -347,12 +347,14 @@ Mithril = m = new function app(window) {
|
||||||
var resolvers = [], rejecters = [], resolved, rejected
|
var resolvers = [], rejecters = [], resolved, rejected
|
||||||
var object = {
|
var object = {
|
||||||
resolve: function(value) {
|
resolve: function(value) {
|
||||||
resolved = value
|
if (resolved === undefined) resolved = value
|
||||||
for (var i = 0; i < resolvers.length; i++) resolvers[i](value)
|
for (var i = 0; i < resolvers.length; i++) resolvers[i](value)
|
||||||
|
resolvers.length = rejecters.length = 0
|
||||||
},
|
},
|
||||||
reject: function(value) {
|
reject: function(value) {
|
||||||
rejected = value
|
if (rejected === undefined) rejected = value
|
||||||
for (var i = 0; i < rejecters.length; i++) rejecters[i](value)
|
for (var i = 0; i < rejecters.length; i++) rejecters[i](value)
|
||||||
|
resolvers.length = rejecters.length = 0
|
||||||
},
|
},
|
||||||
promise: m.prop()
|
promise: m.prop()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -688,6 +688,60 @@ function testMithril(mock) {
|
||||||
})
|
})
|
||||||
return value === 1
|
return value === 1
|
||||||
})
|
})
|
||||||
|
test(function() {
|
||||||
|
//https://github.com/lhorie/mithril.js/issues/80
|
||||||
|
var deferred = m.deferred(), value
|
||||||
|
deferred.resolve(1)
|
||||||
|
deferred.resolve(2)
|
||||||
|
deferred.promise.then(function(data) {
|
||||||
|
value = data
|
||||||
|
})
|
||||||
|
return value === 1
|
||||||
|
})
|
||||||
|
test(function() {
|
||||||
|
//https://github.com/lhorie/mithril.js/issues/80
|
||||||
|
var deferred = m.deferred(), value
|
||||||
|
deferred.promise.then(function(data) {
|
||||||
|
value = data
|
||||||
|
})
|
||||||
|
deferred.resolve(1)
|
||||||
|
deferred.resolve(2)
|
||||||
|
return value === 1
|
||||||
|
})
|
||||||
|
test(function() {
|
||||||
|
//https://github.com/lhorie/mithril.js/issues/80
|
||||||
|
var deferred = m.deferred(), value1, value2
|
||||||
|
deferred.promise.then(function(data) {
|
||||||
|
value1 = data
|
||||||
|
}, function(data) {
|
||||||
|
value2 = data
|
||||||
|
})
|
||||||
|
deferred.resolve(1)
|
||||||
|
deferred.reject(2)
|
||||||
|
return value1 === 1 && value2 === undefined
|
||||||
|
})
|
||||||
|
test(function() {
|
||||||
|
//https://github.com/lhorie/mithril.js/issues/80
|
||||||
|
var deferred = m.deferred(), value1, value2
|
||||||
|
deferred.promise.then(function() {
|
||||||
|
value1 = data
|
||||||
|
}, function(data) {
|
||||||
|
value2 = data
|
||||||
|
})
|
||||||
|
deferred.reject(1)
|
||||||
|
deferred.resolve(2)
|
||||||
|
return value1 === undefined && value2 === 1
|
||||||
|
})
|
||||||
|
test(function() {
|
||||||
|
//https://github.com/lhorie/mithril.js/issues/80
|
||||||
|
var deferred = m.deferred(), value
|
||||||
|
deferred.promise.then(null, function(data) {
|
||||||
|
value = data
|
||||||
|
})
|
||||||
|
deferred.reject(1)
|
||||||
|
deferred.reject(2)
|
||||||
|
return value === 1
|
||||||
|
})
|
||||||
|
|
||||||
//m.sync
|
//m.sync
|
||||||
test(function() {
|
test(function() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue