为什么我不能将 Deferred 对象的(自定义用户定义的)属性设置为同一个 Deferred 对象返回的承诺?我认为这是可能的,因为dojo.store.JsonRest
它:
var results = xhr("GET", {
url: this.target + (query || ""),
handleAs: "json",
headers: headers
});
results.total = results.then(function(){
var range = results.ioArgs.xhr.getResponseHeader("Content-Range");
return range && (range=range.match(/\/(.*)/)) && +range[1];
});
return QueryResults(results);
我必须做一些非常相似的事情,但是我链接了一个额外的延迟对象,因为我需要将我的 JSON 输入转换为 QueryResults() 期望的格式。如果我将该承诺分配给我的 Deferred 对象的属性,它会导致undefined
. 但是,如果我将承诺分配给常规变量,则分配有效。不幸的是,QueryResults 需要分配属性。
我想我已经将问题归结为xhr()
and返回的承诺之间的差异xhr().then()
。请检查此 jsFiddle的控制台输出。
有什么区别,我该如何解决?