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 语句“删除”了函数的作用域?我怎样才能避免这种情况并兑现承诺?
你误解了什么debounce()。
debounce()是一个函数,它接受一个函数,并返回一个函数。返回的函数只会在 N 毫秒的静默后调用传递的回调(也就是说,如果您按顺序非常快地调用 debounced 函数,则只有最后一次调用会在时间过去后生效)。
debounce()它本身不会调用您传递给它的函数。所以,deferred.resolve()永远不会被叫到。