Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在while循环NODEJS中停止异步进程_Node.js_Express_Asynchronous_Events - Fatal编程技术网

Node.js 在while循环NODEJS中停止异步进程

Node.js 在while循环NODEJS中停止异步进程,node.js,express,asynchronous,events,Node.js,Express,Asynchronous,Events,如何在提供的代码中循环时停止?什么代码应该处于“停止”状态才能在循环时停止 当监听器给出另一个状态时,循环仍在运行常量状态值保持“开始”。当侦听器提供新状态时,它不会更改 constructor(){ events.on("imdb-scraper-engine", ({status}) =>{ this.scraper(status); }); this.scraper('INIT'); } async scraper(status){ whi

如何在提供的代码中循环时停止?什么代码应该处于“停止”状态才能在循环时停止

当监听器给出另一个状态时,循环仍在运行常量状态值保持“开始”。当侦听器提供新状态时,它不会更改

constructor(){
    events.on("imdb-scraper-engine", ({status}) =>{
        this.scraper(status);
    });
    this.scraper('INIT');
}

async scraper(status){

while(status == 'START'){
    await axios.get('https://jsonplaceholder.typicode.com/posts').then((result)=>{
        console.log(result);
    });

}

    if((status == 'STOP')){console.log('Process was stopped');}
    if((status == 'INIT')){console.log('Engine Initialized')}

}

--eidt发现我总是在构造函数中调用this.scraper启动新进程。但是仍然想知道如何在循环时停止。

基于您可能试图实现的目标,我可以为您设计一个想法

但这可能行不通


根据你可能试图实现的目标,我可以为你设计一个想法

但这可能行不通


您能检查while循环下的状态吗?请参阅editconts status values keeps“START”。当侦听器提供新状态时,它不会改变。好吧,兄弟,这意味着while循环没有问题,对吗?如何更新您的值“状态”?在构造函数中有一个事件。关于谁lisens并提供新状态,您可以在while循环下检查状态吗?请参阅editconst状态值保持“开始”。当侦听器提供新状态时,它不会改变。好吧,兄弟,这意味着while循环没有问题,对吗?如何更新值“STATUS”?在构造函数中有一个event.on谁先声明并给出新状态?为什么要使用while循环?当状态为“开始”时,while循环将为无限循环。此外,在每个事件触发后,您都会一次又一次地调用该函数,因此新事件对以前的函数没有影响。首先,为什么要使用while循环?当状态为“开始”时,while循环将为无限循环。此外,在每个事件触发后,您都会一次又一次地调用该函数,因此新事件对以前的函数没有影响。
Try it: 


     constructor(){
            events.on("imdb-scraper-engine", ({status}) =>{
                this.scraper(status);
            });
            this.scraper('INIT');
        }

        async scraper(status){
        console.log(status)
        while(status == 'START' && status != 'STOP'){
console.log(status)
            await axios.get('https://jsonplaceholder.typicode.com/posts').then((result)=>{
                console.log(result);
            });

        }

            if((status == 'STOP')){console.log('Process was stopped');}
            if((status == 'INIT')){console.log('Engine Initialized')}

        }
theLoop; //its a variable

constructor(){
    this.listenEvent();
    this.scraper('INIT');
}
function listenEvent(){
  events.on("imdb-scraper-engine", ({status}) =>{
         if(status=='STOP'){
            clearTimeout(this.theLoop);
         }
         this.scrapper(status);
    });
}
function startWhileLoop() {
   this.theLoop = setTimeout(async function(){ 
       await axios.get('https://jsonplaceholder.typicode.com/posts').then((result)=>{
       console.log(result);
     });
   }, 0);
}

scraper(status){
   while(status == 'START'){
     startWhileLoop();
   }
   if((status == 'STOP')){console.log('Process was stopped');}
   if((status == 'INIT')){console.log('Engine Initialized')}
}