#454 fix regression
This commit is contained in:
parent
d4099a254b
commit
9748b6ece4
2 changed files with 16 additions and 6 deletions
11
mithril.js
11
mithril.js
|
|
@ -764,12 +764,11 @@ var m = (function app(window, undefined) {
|
|||
deferred.promise = propify(deferred.promise);
|
||||
return deferred
|
||||
};
|
||||
function propify(promise) {
|
||||
var prop = m.prop();
|
||||
function propify(promise, initialValue) {
|
||||
var prop = m.prop(initialValue);
|
||||
promise.then(prop);
|
||||
prop.then = function(resolve, reject) {
|
||||
promise = promise.then(resolve, reject).then(prop);
|
||||
return prop;
|
||||
return propify(promise.then(resolve, reject), initialValue)
|
||||
};
|
||||
return prop
|
||||
}
|
||||
|
|
@ -1022,7 +1021,7 @@ var m = (function app(window, undefined) {
|
|||
|
||||
m.request = function(xhrOptions) {
|
||||
if (xhrOptions.background !== true) m.startComputation();
|
||||
var deferred = m.deferred();
|
||||
var deferred = new Deferred();
|
||||
var isJSONP = xhrOptions.dataType && xhrOptions.dataType.toLowerCase() === "jsonp";
|
||||
var serialize = xhrOptions.serialize = isJSONP ? identity : xhrOptions.serialize || JSON.stringify;
|
||||
var deserialize = xhrOptions.deserialize = isJSONP ? identity : xhrOptions.deserialize || JSON.parse;
|
||||
|
|
@ -1051,7 +1050,7 @@ var m = (function app(window, undefined) {
|
|||
if (xhrOptions.background !== true) m.endComputation()
|
||||
};
|
||||
ajax(xhrOptions);
|
||||
deferred.promise(xhrOptions.initialValue);
|
||||
deferred.promise = propify(deferred.promise, xhrOptions.initialValue);
|
||||
return deferred.promise
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2417,6 +2417,17 @@ function testMithril(mock) {
|
|||
mock.XMLHttpRequest.$instances.pop().onreadystatechange()
|
||||
return prop().url === "test?foo=1&foo=2"
|
||||
})
|
||||
test(function() {
|
||||
var value
|
||||
var prop1 = m.request({method: "GET", url: "test", initialValue: 123})
|
||||
var val1 = prop1()
|
||||
var prop2 = prop1.then(function() {return 1})
|
||||
var val2 = prop2()
|
||||
var prop3 = prop1.then(function(v) {value = v})
|
||||
var val3 = prop3()
|
||||
mock.XMLHttpRequest.$instances.pop().onreadystatechange()
|
||||
return val1 === 123 && val2 === 123 && val3 === 123 && value.method === "GET" && value.url === "test"
|
||||
})
|
||||
|
||||
// m.request over jsonp
|
||||
test(function(){
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue