Javascript 创建一个while循环,在某次尝试后中断-NodeJS 描述

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,这样您就可以在自动计时的循环上运行,这是一种“正确”的

我正在尝试为我的监视器API编写一个while循环。 目标是调用API,直到百分比达到100。 我想每5秒钟打一次电话。通常在30秒内,百分比将达到100%。 我想在10次尝试后抛出错误,这等于50秒


我试过了
问题: 为什么我的
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)