Javascript бесконечная прокрутка и несколько обещаний AJAX - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь реализовать бесконечную прокрутку в моем приложении.Поэтому я хочу сделать несколько AJAX-вызовов в качестве пользовательских прокруток.Поэтому я хочу получить новый набор записей с сервера при прокрутке.У меня есть действие «infiniteScrolled», которое вызывается моим пользовательским компонентом при прокрутке.

Мой вопрос: когда я пытаюсь снова вызвать this.get ('handleGridPromise'), он не запускается снова (возможно, потому чтообещание было решено с помощью первого звонка) Как я могу исправить то же самое?

handleGridPromise: function() {
    var self = this;
    var request = self.get('serverParams');
    return new Ember.RSVP.Promise(function(resolve, reject){
        var promise = self.updateRequest(request);
        promise.then(function(updateRequest){
            var deferred = self.doXhrPost(updateRequest, self.get('gridURL'), true, false);
            deferred.then(function(response){               
                self.gridDataLoaded(response);
                resolve(self.get('model.gridData'));
            });
        });
    });
}.property('attr1', 'attr2'),


infiniteScrolled(record, index) {
    Ember.set(this.get('serverParams'), 'recordstartindex', index);
    Ember.set(this.get('serverParams'), 'recordendindex', index+50);
    this.get('handleGridPromise').then((records) => {
    const until = Math.min((index + 50), (this.get('model.gridData.length') - 1));
        Ember.run.later(() => {
            for (index; index < until; index++) {
                if (records[index].id === undefined) {
                    records.replace(index, 1, this.get(`model.gridData.${index}`));
                }
            }
        }, 500);
    });
}
...