#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);
|
deferred.promise = propify(deferred.promise);
|
||||||
return deferred
|
return deferred
|
||||||
};
|
};
|
||||||
function propify(promise) {
|
function propify(promise, initialValue) {
|
||||||
var prop = m.prop();
|
var prop = m.prop(initialValue);
|
||||||
promise.then(prop);
|
promise.then(prop);
|
||||||
prop.then = function(resolve, reject) {
|
prop.then = function(resolve, reject) {
|
||||||
promise = promise.then(resolve, reject).then(prop);
|
return propify(promise.then(resolve, reject), initialValue)
|
||||||
return prop;
|
|
||||||
};
|
};
|
||||||
return prop
|
return prop
|
||||||
}
|
}
|
||||||
|
|
@ -1022,7 +1021,7 @@ var m = (function app(window, undefined) {
|
||||||
|
|
||||||
m.request = function(xhrOptions) {
|
m.request = function(xhrOptions) {
|
||||||
if (xhrOptions.background !== true) m.startComputation();
|
if (xhrOptions.background !== true) m.startComputation();
|
||||||
var deferred = m.deferred();
|
var deferred = new Deferred();
|
||||||
var isJSONP = xhrOptions.dataType && xhrOptions.dataType.toLowerCase() === "jsonp";
|
var isJSONP = xhrOptions.dataType && xhrOptions.dataType.toLowerCase() === "jsonp";
|
||||||
var serialize = xhrOptions.serialize = isJSONP ? identity : xhrOptions.serialize || JSON.stringify;
|
var serialize = xhrOptions.serialize = isJSONP ? identity : xhrOptions.serialize || JSON.stringify;
|
||||||
var deserialize = xhrOptions.deserialize = isJSONP ? identity : xhrOptions.deserialize || JSON.parse;
|
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()
|
if (xhrOptions.background !== true) m.endComputation()
|
||||||
};
|
};
|
||||||
ajax(xhrOptions);
|
ajax(xhrOptions);
|
||||||
deferred.promise(xhrOptions.initialValue);
|
deferred.promise = propify(deferred.promise, xhrOptions.initialValue);
|
||||||
return deferred.promise
|
return deferred.promise
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2417,6 +2417,17 @@ function testMithril(mock) {
|
||||||
mock.XMLHttpRequest.$instances.pop().onreadystatechange()
|
mock.XMLHttpRequest.$instances.pop().onreadystatechange()
|
||||||
return prop().url === "test?foo=1&foo=2"
|
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
|
// m.request over jsonp
|
||||||
test(function(){
|
test(function(){
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue