Отменить и вернуть - PullRequest
       32

Отменить и вернуть

0 голосов
/ 16 октября 2018

У меня проблема с этим фрагментом кода:

function aFunction(){
  ....
    var deferred = $q.defer();
    debounce(function () {
       deferred.resolve(service.subscribe0(data));
    }, 350);
  return deferred.promise;
}

Возвращенное обещание никогда не разрешается.Функция debounce - это сторонняя функция, которая загружается из NPM очень часто, поэтому я могу быть уверен, что она работает.

Может ли это быть потому, что оператор return «удаляет» область действия функции?Как я могу избежать этого и выполнить обещание?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Я бы ожидал что-то вроде:

const getData = data => Promise.resolve( service.subscribe0( data ));
grid.addEventListener( 'scroll', debounce( getData, 350 ));

Мы хотим, чтобы сетка обновлялась при прокрутке, но отменила ее, чтобы не затопить службу вызовами.Поэтому мы должны отменить функцию, связанную с прокруткой, а не с вызовом данных, поскольку между двумя различными вызовами данных нет связи.

0 голосов
/ 16 октября 2018

Вы неправильно понимаете, что делает debounce().

debounce() - это функция, которая принимает функцию и возвращает функцию.Возвращенная функция будет вызывать переданный обратный вызов только после N миллисекунд молчания (т. Е. Если вы вызываете отлаженную функцию очень быстро по очереди, только последний вызов вступит в силу по истечении времени).

*Сам 1007 * не вызывает функцию, которую вы передаете.Таким образом, deferred.resolve() никогда не вызывается.

...