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 object = {
|
||||
resolve: function(value) {
|
||||
resolved = value
|
||||
if (resolved === undefined) resolved = value
|
||||
for (var i = 0; i < resolvers.length; i++) resolvers[i](value)
|
||||
resolvers.length = rejecters.length = 0
|
||||
},
|
||||
reject: function(value) {
|
||||
rejected = value
|
||||
if (rejected === undefined) rejected = value
|
||||
for (var i = 0; i < rejecters.length; i++) rejecters[i](value)
|
||||
resolvers.length = rejecters.length = 0
|
||||
},
|
||||
promise: m.prop()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -688,6 +688,60 @@ function testMithril(mock) {
|
|||
})
|
||||
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
|
||||
test(function() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue