var feima = {
,json: function(url, data, success, options){
return $.ajax({//code...})
}
}
feima.getnumber = function(options,num){
if(num >0 && num <=10){
feima.json(buyNumberUrl,options,function (res){
if(num > 1){
num--;
feima.getnumber(options,num);
}else{
layer.msg('购买成功');
}
});
}
};
feima.getnumber(data,8);
feima.getnumber(data,8); 调用后会连续发送8个ajax请求,怎样能把每个请求间隔1下下,我怕服务器受不了。我用setTimeout("feima.getnumber(options,num);",1000) 套住一下,貌似是不行。这个函数参数比较奇葩。
要么接受,纯字符串。要么必须是函数名称。
我按照字符串传,还是各种奇怪的错误提示。函数未定义了。什么什么的。
用 await 处理起来比较方便,需要把 getnumber 声明为 async 函数。
先定义一个 delay() 函数用来延时,然后就可以把递归调用变成循环,写起来比较简单
如果继续使用你的递归写法,建议把退出/结束逻辑前置,后面单独处理递归调用。递归的时候记得加 setTimeout 延时。