Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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
Javascript 如何检查回调是否挂起?_Javascript - Fatal编程技术网

Javascript 如何检查回调是否挂起?

Javascript 如何检查回调是否挂起?,javascript,Javascript,我正在学习JavaScript,任务是编写一个公共函数来检查是否进行了异步调用,但响应仍然挂起(即进程正在“运行”)。如果进程正在进行,则需要返回true;如果进程未进行,则返回false function Machine() { function onReady() { alert( 'ready!' ); } this.setOnReady = function(newOnReady) { onReady = newOnReady; }; this.run

我正在学习JavaScript,任务是编写一个公共函数来检查是否进行了异步调用,但响应仍然挂起(即进程正在“运行”)。如果进程正在进行,则需要返回
true
;如果进程未进行,则返回
false

function Machine() {
  function onReady() {
    alert( 'ready!' );
  }
  this.setOnReady = function(newOnReady) {
    onReady = newOnReady;
  };
  this.run = function() {
    setTimeout(function() {
      onReady();
    }, 10000);
  };
}

 var machine = new Machine();
 alert('before the run: ' + machine.isRunning()); // before: false
 machine.run();
 alert('is running: ' + machine.isRunning()); // is running: true
 machine.setOnReady(function() {
     alert("after: " + machine.isRunning()); // after: false
 });
在run()中,将isRunning()方法返回的对象上的标志设置为true(通过
this.running=true;

完成运行后,将其设置回false。

在run()中,将isRunning()方法返回的对象上的标志设置为true(通过
this.running=true;


完成运行后,将其设置回false。

以下是如何对其进行编码:

函数机(){
//添加这个私有变量
var isRunning=false;
函数onReady(){
警惕('ready!');
}
this.setOnReady=函数(newOnReady){
onReady=newOnReady;
};
this.run=函数(){
isRunning=true;//设置标志
setTimeout(函数(){
isRunning=false;//清除标志
onReady();
},2000);//2秒钟,我没有耐心!
};
//添加此方法:
this.isRunning=函数(){
返回正在运行;
}
}
var machine=新机器();
console.log('运行前:'+machine.isRunning());//前:假
machine.run();
console.log('正在运行:'+machine.isRunning());//正在跑步:是的
machine.setOnReady(函数(){
console.log(“after:+machine.isRunning());//after:false

});以下是如何对其进行编码:

函数机(){
//添加这个私有变量
var isRunning=false;
函数onReady(){
警惕('ready!');
}
this.setOnReady=函数(newOnReady){
onReady=newOnReady;
};
this.run=函数(){
isRunning=true;//设置标志
setTimeout(函数(){
isRunning=false;//清除标志
onReady();
},2000);//2秒钟,我没有耐心!
};
//添加此方法:
this.isRunning=函数(){
返回正在运行;
}
}
var machine=新机器();
console.log('运行前:'+machine.isRunning());//前:假
machine.run();
console.log('正在运行:'+machine.isRunning());//正在跑步:是的
machine.setOnReady(函数(){
console.log(“after:+machine.isRunning());//after:false

});我不太明白你的意思,但你的回答把我逼到了这个地步:
函数机器(){var running=false;函数onReady(){alert('ready!');}this.setOnReady=function(newOnReady){onReady=newOnReady;};this.run=function(){running=true;setTimeout(function()){onReady();},1000);};this.isRunning=function(){return running;}}
Nice!这似乎与@trincot的答案非常相似,所以请随意接受他们的答案:)我不太理解你,但你的答案把我推到了这一步:
function Machine(){var running=false;function onReady(){alert('ready!');}this.setOnReady=function(newOnReady){onReady=newOnReady;};this.run=function(){running=true;setTimeout(function(){onReady();},1000);};this.isRunning=function(){return running;}
Nice!这似乎与@trincot的答案非常相似,所以请随意接受他们的答案:)非常感谢!非常感谢!对不起,先生,但我的格式和问题对我来说更清楚,我想对东欧人来说,他们不太会说英语。对不起,先生,但我的格式和问题对我来说更清楚,我不太喜欢这是东欧人的一个想法,他们不太会说英语。