私はプロミスは初めてですが、Deft.js を使用していくつかの例を見てきましたが、なぜ私の基本的な例が機能しないのか疑問に思っています。
This siteを見て、.done()
機能するはずだと思ったのですが、エラーが発生し続けます。
これが私のコードです:
onScopeChange: function(scope) {
var promise = this.loadStories(scope).then({
success: function(records) {
console.log(records);
},
failure: function(error) {
alert(error);
}
}).always(function() {
// Do something whether call succeeded or failed
console.log('this should always appear');
}).done();
},
loadStories: function(scope) {
var deferred = Ext.create('Deft.promise.Deferred');
Ext.create('Rally.data.wsapi.Store', {
autoLoad: true,
model: 'UserStory',
fetch: ['FormattedID', 'Name', 'ScheduleState','RevisionHistory'],
filters: [scope.getQueryFilter()],
listeners: {
load: function(me, records, success) {
this._onStoriesLoaded(deferred, records, success);
},
scope: this
}
});
return deferred.promise;
},
_onStoriesLoaded: function(deferred, records, success) {
console.log('stories loaded ...');
if (success) {
deferred.resolve(records);
} else {
deferred.reject("Error loading stories");
}
}
これは、'Rally.data.wsapi.Store'
非同期コールバックにつながる非常に基本的な例です。
私の質問は、なぜ.done()
機能しないのかということだけです-私は次のようなエラーを受け取り続けます:
TypeError: Object [object Object] has no method 'done'
これは、私の「約束」オブジェクトが実際には Deft Promise オブジェクトではないことを意味しますよね?