我有一个每分钟只能进行 60 个 API 调用的对象。所以我想做的是,当一个我知道我不会被允许放置的函数调用到来时,将它添加到队列中,然后在更方便的时间再次调用该函数。
这是我想解决的方法
var API_caller = function(){
this.function_queue = [];
};
API_caller.prototype.make_api_call = function(){
if(this.can_make_call()){
this.make_call();
} else {
// If I cant place an API call then add
// the function to the function queue
this.function_queue.push(this.make_api_call);
}
};
API_caller.prototype.queue_call = function(){
// remove function from queue and call it
var func = this.function_queue.shift();
func();
}
这适用于没有参数的函数,但如果make_api_call()
有参数怎么办
API_caller.prototype.make_api_call = function(data){
if(this.can_make_call()){
this.make_call();
} else {
// If I cant place an API call then add
// the function to the function queue
this.function_queue.push(this.make_api_call(data));
}
};
但是,在这种情况下,make_api_call(data)
将在将其推送到之前对其进行评估,function_queue
并且func
将不再持有导致queue_call()
错误的函数。
我怎样才能解决这个问题?