Javascript I';我希望每秒发出一个http请求,直到返回一个特定的结果,然后停止

Javascript I';我希望每秒发出一个http请求,直到返回一个特定的结果,然后停止,javascript,node.js,Javascript,Node.js,我首先尝试使用回调(如果需要,我很乐意发布这段代码),但当我运行它时,什么也不会发生。所以我现在试着去做一些承诺(我不太熟悉),但还是遇到了同样的问题,什么也没发生 谁能告诉我哪里出了问题 我觉得这可能与异步有关,但我认为使用承诺可以解决这个问题 let btcmOrderStatus = undefined; let orderGuid = 987654321; //Promise Part One function getOrderStatus() { return new Pro

我首先尝试使用回调(如果需要,我很乐意发布这段代码),但当我运行它时,什么也不会发生。所以我现在试着去做一些承诺(我不太熟悉),但还是遇到了同样的问题,什么也没发生

谁能告诉我哪里出了问题

我觉得这可能与异步有关,但我认为使用承诺可以解决这个问题

let btcmOrderStatus = undefined;
let orderGuid = 987654321;

//Promise Part One
function getOrderStatus()
{
    return new Promise(resolve => 
    {
        client.getOrderDetail([orderGuid], function(err, data)
        { 
            tempOrderStatus = data.orders[0].status;
            resolve(tempOrderStatus);
       });
   });
}

//Promise Part Two
async function primeFunction()
{
    var btcmOrderStatus;
    btcmOrderStatus = await getOrderStatus();
    console.log("Status : " + btcmOrderStatus);    
}

while (btcmOrderStatus != "Cancelled") {
    primeFunction();
}

我注意到,在代码中,实际上没有任何1秒的延迟。您可能打算在
primeFunction
中设置一个

这里有一种方法:

函数makeRequest(){
//假设我们在做一个请求,随机等待时间长达2秒,
//并在30%的时间内返回true(表示成功)
返回新承诺((解决)=>{
设置超时(()=>{
控制台日志(“收到响应”);
解析(Math.random()<0.3);
},Math.random()*2e3);
});
}
函数wait1Second(){
//等待一秒钟,然后解决承诺
返回新承诺((解决)=>{
设置超时(解析,1e3);
});
}
让计数=0;
函数requestAndWait(){
计数++;
常量计时器=等待1秒();
makeRequest()
。然后((成功)=>{
如果(成功){
日志(计数“成功;停止”);
}否则{
console.log(计数,“未成功”);
timer.then(requestAndWait);
}
});
}

requestAndWait()感谢您的回复!根据您的建议,我插入了'await',但是在等待之后,我得到了一个错误:primeFunction的“意外标识符”。没错,我确实消除了1秒的延迟。我想这可能是妨碍工作的原因。有没有更好的方法来实现我的“不断发出请求直到变量等于x”循环?我已经修改了我的答案。希望这会有帮助。这看起来正是我想要的。我将对它进行修补,并尝试在我的代码中使用它。再一次,非常感谢。很有魅力。这真的很有帮助,谢谢。