Javascript 创建一个while循环,在某次尝试后中断-NodeJS 描述
我正在尝试为我的监视器API编写一个while循环。 目标是调用API,直到百分比达到100。 我想每5秒钟打一次电话。通常在30秒内,百分比将达到100%。 我想在10次尝试后抛出错误,这等于50秒Javascript 创建一个while循环,在某次尝试后中断-NodeJS 描述,javascript,node.js,nodes,Javascript,Node.js,Nodes,我正在尝试为我的监视器API编写一个while循环。 目标是调用API,直到百分比达到100。 我想每5秒钟打一次电话。通常在30秒内,百分比将达到100%。 我想在10次尝试后抛出错误,这等于50秒 我试过了 问题: 为什么我的tryCount始终显示为0而不是增量 如何创建执行类似操作的while循环?您需要刷新监视器变量,而不仅仅是重新解析。你的想法是对的,只是需要更进一步 另外,我将您从while循环移动到setInterval,这样您就可以在自动计时的循环上运行,这是一种“正确”的
我试过了
问题: 为什么我的
tryCount
始终显示为0而不是增量
如何创建执行类似操作的
while循环?您需要刷新监视器变量,而不仅仅是重新解析。你的想法是对的,只是需要更进一步
另外,我将您从while循环移动到setInterval,这样您就可以在自动计时的循环上运行,这是一种“正确”的方式
let monitor = await Service.monitor(session,taskId);
let percent = JSON.parse(monitor).result[0].data.percent;
let tryCount = 0;
let tryMax = 10;
setInterval(function(){(percent < 100 || tryCount < tryMax) {
if(percent < 100 || tryCount < tryMax){
monitor = await Service.monitor(session,taskId);
let percent = JSON.parse(monitor).result[0].data.percent;
tryCount++;
console.log('in a while loop ',tryCount, percent);
if(tryCount == 10){
var err = new Error('Error')
throw err
}
}else{
clearInterval(this);
}
},5000)
let monitor=wait Service.monitor(会话,任务ID);
让percent=JSON.parse(monitor).result[0].data.percent;
设tryCount=0;
设tryMax=10;
setInterval(函数(){(百分比<100 | | tryCount
我假设您正在以某种方式重新加载监视器,因为即使您重新解析它,如果它是另一台服务器上的连接,您也需要重新加载它。您需要刷新监视器变量,而不仅仅是重新解析。您的想法是正确的,只是需要进一步
另外,我将您从while循环移动到setInterval,这样您就可以在自动计时的循环上运行,这是一种“正确”的方式
let monitor = await Service.monitor(session,taskId);
let percent = JSON.parse(monitor).result[0].data.percent;
let tryCount = 0;
let tryMax = 10;
setInterval(function(){(percent < 100 || tryCount < tryMax) {
if(percent < 100 || tryCount < tryMax){
monitor = await Service.monitor(session,taskId);
let percent = JSON.parse(monitor).result[0].data.percent;
tryCount++;
console.log('in a while loop ',tryCount, percent);
if(tryCount == 10){
var err = new Error('Error')
throw err
}
}else{
clearInterval(this);
}
},5000)
let monitor=wait Service.monitor(会话,任务ID);
让percent=JSON.parse(monitor).result[0].data.percent;
设tryCount=0;
设tryMax=10;
setInterval(函数(){(百分比<100 | | tryCount
我假设您正在以某种方式重新加载监视器
,因为即使您正在解析它,如果它是另一台服务器上的连接,您也需要重新加载它。您的解决方案是只使用setInterval循环,我现在正在键入答案。您正在调用数千个setTimeout()
s,但您需要在5秒钟内什么也不做。使用setInterval()
或将检查放入函数中,并在setTimeout
回调中调用它。>为什么我的tryCount一直显示为0而不是递增?
因为while(百分比<100 | | tryCount
阻止事件循环。您的解决方案是只使用setInterval循环,我现在正在键入答案。您正在调用数千个setTimeout()
s,但您需要在5秒钟内不执行任何操作。或者使用setInterval()
或将检查放入函数并在设置超时
回调中调用它。>为什么我的tryCount一直显示为0而不是递增?
因为而(百分比<100 | | tryCount
阻止事件循环。什么是(百分比<100 | | tryCount
在回调函数开始时应该做什么?我认为这是一个打字错误,他说。而且,tryCount
仍然没有增加。什么是(百分比<100 | | tryCount
在回调函数开始时应该怎么做?我认为这是一个输入错误,他说。而且,tryCount
仍然没有递增。
let monitor = await Service.monitor(session,taskId);
let percent = JSON.parse(monitor).result[0].data.percent;
let tryCount = 0;
let tryMax = 10;
setInterval(function(){(percent < 100 || tryCount < tryMax) {
if(percent < 100 || tryCount < tryMax){
monitor = await Service.monitor(session,taskId);
let percent = JSON.parse(monitor).result[0].data.percent;
tryCount++;
console.log('in a while loop ',tryCount, percent);
if(tryCount == 10){
var err = new Error('Error')
throw err
}
}else{
clearInterval(this);
}
},5000)