在返回错误之前,请重试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

我有一个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
                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();
                }
            }
        });
});