Могу ли я передать параметры функции, дебютирующей с помощью _.lodash?

Я пытаюсь использовать _lodash.debounce(), и у меня есть работа. Однако я не уверен, работает ли он наилучшим образом. Я посмотрел пример на веб-сайте lodash, и они, кажется, просто простые примеры, которые не передают параметры. Вот что у меня есть:

$scope.parsePid = _.debounce(function () {
    $scope.$apply(function () {
        var pid = $scope.option.sPidRange;
        if (pid == null || pid === "") {
            $scope.pidLower = null;
            $scope.pidUpper = null;
        }
        else if (pid.indexOf("-") > 0) {
            pid = pid.split("-");
            $scope.pidLower = parseInt(pid[0]);
            $scope.pidUpper = parseInt(pid[1]);
        }
        else {
            $scope.pidLower = parseInt(pid);
            $scope.pidUpper = null;
        }
    });
}, 1500);

Вышеприведенный код возвращает функцию $scope.parsePid, которая была отклонена. Обратите внимание, что на 4-м line, я получаю значение $scope.option.SPidRange и использую его в функции. Я действительно хочу каким-то образом передать этот параметр, а не получить его таким образом.

Я вызываю функцию следующим образом:

$scope.$watch("option.sPidRange", function (pid) {
    if (pid !== null) {
        $scope.parsePid();
    }
});

Здесь значение pid должно быть равно $scope.parsePid

Я хотел бы передать это значение pid в функцию debounced, но я не уверен как это сделать. Я пробовал несколько разных вещей, но функция debounce дает ошибка.

Можно ли передать параметры в debounced function $scope.parsePid()?

Ответы

Ответ 1

UPDATE

Вы должны передать аргумент в функцию: _.debounce(function (pid) {

Пример с debounce

$scope.parsePid = _.debounce(function(pid){
  $scope.$apply(function(){
    if (pid === null || pid === "") {
      $scope.pidLower = null;
      $scope.pidUpper = null;
    } else if (pid.indexOf("-") > 0) {
      pid = pid.split("-");
      $scope.pidLower = parseInt(pid[0],10);
      $scope.pidUpper = parseInt(pid[1],10);      
    } else {
      $scope.pidLower = parseInt(pid,10);
      $scope.pidUpper = null;
    }      
  });
},1500);

Я бы использовал встроенный $timeout

Пример с $timeout

var promise;

$scope.parsePid = function(pid){
  $timeout.cancel(promise);
  promise = $timeout(function(){     
    if (pid === null || pid === "") {
      $scope.pidLower = null;
      $scope.pidUpper = null;
    } else if (pid.indexOf("-") > 0) {
      pid = pid.split("-");
      $scope.pidLower = parseInt(pid[0],10);
      $scope.pidUpper = parseInt(pid[1],10);      
    } else {
      $scope.pidLower = parseInt(pid,10);
      $scope.pidUpper = null;
    }
  },1500);
};