簡體   English   中英

我可以將參數傳遞給使用_.lodash去抖動的函數嗎?

[英]Can I pass parameters to a function debounced with _.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行,我得到$scope.option.SPidRange的值,並在函數中使用它。 我真的想以某種方式傳遞這個參數而不是這樣做。

我把這個函數稱為:

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

這里的值pid應該等於$scope.parsePid

我想將這個pid的值傳遞給debounced函數,但我不知道該如何做到這一點。 我嘗試了一些不同的東西,但去抖功能會出錯。

是否可以將參數傳遞給去抖動function $scope.parsePid()

UPDATE

你應該將一個參數傳遞給函數: _.debounce(function (pid) {

去抖動的一個例子

$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);
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM