向全球范围提供 "this" 的方式?
Way to provide "this" to the global scope?
我正在使用 debounce
找到的函数 here in this Whosebug post。这是一个允许限制请求的承诺。
当 debounce 函数嵌套在一个函数中时,由于某种原因它不会工作,因为对请求的 setTimeout
调用似乎是一次性发送的。我觉得需要直接引用。
我不能做这样的事情,因为它需要直接引用
function bounced(item){
return debounce(mockRequest, 800, 5)(item)
}
应该这样使用
var bounced = debounce(mockRequest, 800, 5)
问题是我正在创建一个这样的 API 对象,但两个选项都不起作用
API.prototype.request = function(options){
return this.debounce(this.makeRequest, 1000, 2)(options)
}
API.prototype.request = this.debounce(this.makeRequest, 1000, 2) // duh
我正在寻找一些方法来使用 this
而不是直接调用 debounce 方法。
最好是这样的东西
API.prototype.request = function(){
return this.debounce(this.makeRequest, 1000, 2)
}()
我觉得应该是
API.prototype.request = API.prototype.debounce(API.prototype.makeRequest, 1000, 2)
您在创建方法时既没有实例 (this
) 也没有 options
对象。这些被提供给 debounced
函数,它们被存储在那里,然后(可能稍后)用于调用提供的函数。
顺便说一句,将 debounce
放在 API 的原型上可能没有任何意义 - 它是通用辅助方法,而不是实例方法。另请注意,当您 debounce()
原型方法时,您的 all 调用将 globally 去抖动。如果你想每个 API 的实例都有一个队列,你最好做
function API() {
// in the constructor:
this.request = Helpers.debounce(this.makeRequest);
}
API.prototype.makeRequest = function() { … };
// no prototype .request() method
我正在使用 debounce
找到的函数 here in this Whosebug post。这是一个允许限制请求的承诺。
当 debounce 函数嵌套在一个函数中时,由于某种原因它不会工作,因为对请求的 setTimeout
调用似乎是一次性发送的。我觉得需要直接引用。
我不能做这样的事情,因为它需要直接引用
function bounced(item){
return debounce(mockRequest, 800, 5)(item)
}
应该这样使用
var bounced = debounce(mockRequest, 800, 5)
问题是我正在创建一个这样的 API 对象,但两个选项都不起作用
API.prototype.request = function(options){
return this.debounce(this.makeRequest, 1000, 2)(options)
}
API.prototype.request = this.debounce(this.makeRequest, 1000, 2) // duh
我正在寻找一些方法来使用 this
而不是直接调用 debounce 方法。
最好是这样的东西
API.prototype.request = function(){
return this.debounce(this.makeRequest, 1000, 2)
}()
我觉得应该是
API.prototype.request = API.prototype.debounce(API.prototype.makeRequest, 1000, 2)
您在创建方法时既没有实例 (this
) 也没有 options
对象。这些被提供给 debounced
函数,它们被存储在那里,然后(可能稍后)用于调用提供的函数。
顺便说一句,将 debounce
放在 API 的原型上可能没有任何意义 - 它是通用辅助方法,而不是实例方法。另请注意,当您 debounce()
原型方法时,您的 all 调用将 globally 去抖动。如果你想每个 API 的实例都有一个队列,你最好做
function API() {
// in the constructor:
this.request = Helpers.debounce(this.makeRequest);
}
API.prototype.makeRequest = function() { … };
// no prototype .request() method