Deferred オブジェクトの (カスタム ユーザー定義の) プロパティを、同じ Deferred オブジェクトによって返される promise に設定できないのはなぜですか? 私はそれが可能だと思い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() が期待する形式に変換する必要があるため、追加の遅延オブジェクトをチェーンします。その promise を Deferred オブジェクトのプロパティに割り当てると、結果はundefined
. ただし、約束を通常の変数に割り当てると、割り当ては機能します。残念ながら、QueryResults にはプロパティを割り当てる必要があります。
xhr()
と によって返される約束の違いに問題を煮詰めたと思いますxhr().then()
。この jsFiddleのコンソール出力を確認してください。
違いは何ですか?どうすれば回避できますか?