在返回错误之前,请重试javascript函数几次
我有一个javascript函数,如下所示在返回错误之前,请重试javascript函数几次,javascript,Javascript,我有一个javascript函数,如下所示 var url = 'test' var pingStatus = false createjob(url, function(err, client){ client.ImportData(obj, function(err, result) { if(result.Import[0] ==='1') { pingStatus = true
var url = 'test'
var pingStatus = false
createjob(url, function(err, client){
client.ImportData(obj, function(err, result) {
if(result.Import[0] ==='1')
{
pingStatus = true
console.log("Worked")
}
else
{
pingStatus = false
console.log("Didnt Work")
}
});
});
我希望能够尝试创建作业3次,如果它失败3次,我希望运行一些其他功能来执行其他操作
我尝试了一个for循环,并试图打破for循环,但得到一个错误,说这个中断是非法的。(if语句位于回调函数中)
有人能给我指个正确的方向吗
我还尝试使用全局变量“pingSatus”进行检查,但在if语句中设置pingStatus变量之前执行的代码不起作用,因为我不知道您的具体工作是什么,所以我建议这样做:
var url='test'
var pingStatus=false
var yourJob={
迭代:0,
/*yourJobLogic:函数(url,函数(err,客户端){
client.ImportData(对象,函数(错误,结果){
如果(结果导入[0]='1')
{
pingStatus=true
控制台日志(“已工作”)
}
其他的
{
pingStatus=false
console.log(“没有工作”)
}
});
},*/
yourJobLogic:函数(n){
这个.iteration++;
log(“尝试为“+this.iteration+”时间…”执行作业);
var yourConditionToPass=(n==123);
如果(本次迭代>=3){
错误(“我们尝试了3次,但您的作业不起作用,退出!”);
抛出“您的号码不能使用…”;
}否则{
如果(你的条件通行证){
console.info(“你的工作完成了。”);
返回true;
}
这是你的工作逻辑(n);
}
},
doJob:函数(n){
这个迭代=0;
这是你的工作逻辑(n);
}
};
var result=yourJob.doJob(123);
控制台日志(结果);
//产出:
//第一次尝试做这项工作。。。
//你的工作完成了。
var result=yourJob.doJob(789);
/*产出:
第一次尝试做这项工作。。。
试着做这两次工作。。。
试着做这3次工作。。。
我们尝试了3次,但您的工作不起作用,退出!未经授权您的号码无法使用。。。
*/
因为我不知道你的工作到底是做什么的,所以我建议这样做:
var url='test'
var pingStatus=false
var yourJob={
迭代:0,
/*yourJobLogic:函数(url,函数(err,客户端){
client.ImportData(对象,函数(错误,结果){
如果(结果导入[0]='1')
{
pingStatus=true
控制台日志(“已工作”)
}
其他的
{
pingStatus=false
console.log(“没有工作”)
}
});
},*/
yourJobLogic:函数(n){
这个.iteration++;
log(“尝试为“+this.iteration+”时间…”执行作业);
var yourConditionToPass=(n==123);
如果(本次迭代>=3){
错误(“我们尝试了3次,但您的作业不起作用,退出!”);
抛出“您的号码不能使用…”;
}否则{
如果(你的条件通行证){
console.info(“你的工作完成了。”);
返回true;
}
这是你的工作逻辑(n);
}
},
doJob:函数(n){
这个迭代=0;
这是你的工作逻辑(n);
}
};
var result=yourJob.doJob(123);
控制台日志(结果);
//产出:
//第一次尝试做这项工作。。。
//你的工作完成了。
var result=yourJob.doJob(789);
/*产出:
第一次尝试做这项工作。。。
试着做这两次工作。。。
试着做这3次工作。。。
我们尝试了3次,但您的工作不起作用,退出!未经授权您的号码无法使用。。。
*/
recursion是一个搜索词-另外,看看如何使用异步代码recursion是一个搜索词-另外,看看如何使用异步代码
var url = 'test'
var pingStatus = false
var tryTimes = 0;
createjob(url, function(err, client){
client.ImportData(obj, function(err, result) {
if(result.Import[0] ==='1')
{
pingStatus = true;
tryTimes = 0;
console.log("Worked");
}
else
{
pingStatus = false;
console.log("Didnt Work");
tryTimes += 1;
arguments.callee(err, result);
if(tryTimes === 3){
tryTimes = 0;
YOURFUNCTIONTORUN();
}
}
});
});