去抖动和返回

Igi*_*ffa 0 javascript scope promise debouncing

我对这段代码有疑问:

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

返回的承诺永远不会得到解决。Debounce 功能是第 3 方功能,从 NPM 进行了大量下载,因此我可以确定它可以工作。

难道是因为 return 语句“删除”了函数的作用域?我怎样才能避免这种情况并兑现承诺?

Mad*_*iha 7

你误解了什么debounce()

debounce()是一个函数,它接受一个函数,并返回一个函数。返回的函数只会在 N 毫秒的静默后调用传递的回调(也就是说,如果您按顺序非常快地调用 debounced 函数,则只有最后一次调用会在时间过去后生效)。

debounce()它本身不会调用您传递给它的函数。所以,deferred.resolve()永远不会被叫到。