【发布时间】:2019-03-20 17:09:28
【问题描述】:
我对这段代码有疑问:
function aFunction(){
....
var deferred = $q.defer();
debounce(function () {
deferred.resolve(service.subscribe0(data));
}, 350);
return deferred.promise;
}
返回的承诺永远不会被解决。 Debounce 函数是一个第三方函数,从 NPM 有很多下载,所以我可以确定它可以工作。
可能是因为 return 语句“删除”了函数的范围吗?我怎样才能避免这种情况并解决承诺?
【问题讨论】:
-
so I can be sure it works- 但你能确定你使用正确吗?我们可以吗?到 npm 的链接怎么样 -
如果这是 lodash debounce,那么它会返回 debounced 函数,但您永远不会调用它或返回它。只能通过调用 debounced 函数来解决承诺
-
我不明白这个。承诺只解决一次。 Debounce 可防止某些事情发生多次过快。
-
即使这样也不会阻止网格更频繁地触发。您必须对 aFunction 进行去抖动,以便滚动网格不会触发数百个 ajax 调用。正如所写的那样,你解除了承诺决议,这只会发生一次。对 aFunction 的每次调用仍将创建一个新的去抖动函数,与其他函数分开,因此将进行数据调用。
标签: javascript scope promise debouncing