请问一下nodejs里面如何设置无限循环?

如何可以让这段代码无限循环

const request = require("request");
let url = 'http://xxxxxxx';

function post(n){
    request({
        url: url,
        method: "POST",
        headers: {
            "content-type": "application/json",
        }
    }, function(error, response, body) {
        if(body !== undefined){
            let buff = Buffer.from(body)
            //console.log(buff)
            buff = buff.slice(3,buff.length)
            let data = JSON.parse(buff)
            if(data.code == '1'){
              
              console.log(n);
            }else{
              settimeout(post, 2000);
            }
        }
        
    });
}


for(let n = 1; n < 100000; n++){
    setTimeout(post, 300*n, n);
}


  
  
阅读 3.5k
4 个回答

let n = 0
while(true){

post(n++)

}

const request = require("request");
let url = 'http://tj.viphxw.com/index/delkey';

function post(n){
    request({
        url: url,
        method: "POST",
        headers: {
            "content-type": "application/json",
        }
    }, function(error, response, body) {
        if(body !== undefined){
            let buff = Buffer.from(body)
            //console.log(buff)
            buff = buff.slice(3,buff.length)
            let data = JSON.parse(buff)
            if(data.code == '1'){
              
              console.log(n);
            }else{
              
            }
        }
        //定时器放在这里,2s后再次运行post
        settimeout(post, 2000, n++);
    });
}

post(0)

不知道你是不是用的这个,官方已经声明不推荐使用了。

我推荐你用 Axios 吧,

然后封装成 Promise 使用 await 来写就很方便了,比如

async function delay(milliseconds) {
    return new Promise(resolve => {
        setTimeout(resolve, milliseconds);
    });
}


async function post(n) {
    return axios.post(url, { headers });
}


(async () => {
    for (let n = 0; n < 100000; n++) {
        await post(n);
        await delay(2000);
    }
})();

如果仍然要使用 request,也可以把它封装成一个 Promise,就像上面的 delay 那样

for(let n = 1; n < 100000; n++){
    setTimeout(post, 300*n, n);
    n=n%99999;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏