unwrap thennable

This commit is contained in:
Leo Horie 2014-04-05 21:16:49 -04:00
parent efae454bd4
commit 5ecc942abd
6 changed files with 34 additions and 4 deletions

View file

@ -319,7 +319,8 @@ new function(window) {
list.push(function(value) {
try {
var result = callback(value)
next[method](result !== undefined ? result : value)
if (result && typeof result.then == "function") result.then(next[method], error)
else next[method](result !== undefined ? result : value)
}
catch (e) {
if (e instanceof Error && e.constructor !== Error) throw e
@ -773,6 +774,20 @@ function testMithril(mock) {
deferred.resolve("test")
return value1 === undefined && value2 instanceof Error
})
test(function() {
var deferred1 = m.deferred()
var deferred2 = m.deferred()
var value1, value2
deferred1.promise.then(function(data) {
value1 = data
return deferred2.promise
}).then(function(data) {
value2 = data
})
deferred1.resolve(1)
deferred2.resolve(2)
return value1 === 1 && value2 === 2
})
//m.sync
test(function() {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -319,7 +319,8 @@ new function(window) {
list.push(function(value) {
try {
var result = callback(value)
next[method](result !== undefined ? result : value)
if (result && typeof result.then == "function") result.then(next[method], error)
else next[method](result !== undefined ? result : value)
}
catch (e) {
if (e instanceof Error && e.constructor !== Error) throw e

View file

@ -245,6 +245,20 @@ function testMithril(mock) {
deferred.resolve("test")
return value1 === undefined && value2 instanceof Error
})
test(function() {
var deferred1 = m.deferred()
var deferred2 = m.deferred()
var value1, value2
deferred1.promise.then(function(data) {
value1 = data
return deferred2.promise
}).then(function(data) {
value2 = data
})
deferred1.resolve(1)
deferred2.resolve(2)
return value1 === 1 && value2 === 2
})
//m.sync
test(function() {