javascript - 如何检查回调是否待处理?

标签 javascript

我正在学习 JavaScript,并有任务编写一个公共(public)函数来检查是否进行了异步调用,但响应仍处于待处理状态(即进程正在“运行”)。如果该过程正在进行,则需要返回 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
 });

最佳答案

以下是编码方法:

function Machine() {
  // add this private variable
  var isRunning = false;
  function onReady() {
    alert( 'ready!' );
  }
  this.setOnReady = function(newOnReady) {
    onReady = newOnReady;
  };
  this.run = function() {
    isRunning = true; // set flag
    setTimeout(function() {
      isRunning = false; //clear flag
      onReady();
    }, 2000); // 2 seconds, I don't have patience!
  };
  // Add this method:
  this.isRunning = function() {
    return isRunning;
  }
}

var machine = new Machine();
console.log('before the run: ' + machine.isRunning()); // before: false
machine.run();
console.log('is running: ' + machine.isRunning()); // is running: true
machine.setOnReady(function() {
  console.log("after: " + machine.isRunning()); // after: false
});

关于javascript - 如何检查回调是否待处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39214981/

相关文章:

javascript - 使用 JavaScript 在每第 n 个位置拆分一个字符串?

javascript - 如何为每个轮播元素设置间隔持续时间?

javascript - 如何在非点击事件触发时停止重定向到页面

javascript - 为什么只能用点号来引用表格?

javascript - 如何将我的 JavaScript 代码转换为小书签?

javascript - 我可以保存一个文件,该文件将仅使用 javascript/C/C++ 在服务器端从 php 代码生成,并且没有打开浏览器吗?

javascript - 使用 JavaScript 发送 HTTP 请求?

javascript - 让我的不和谐机器人在特定时间发送消息

javascript - Jquery 条件不适用于附加的 div

javascript - 我的打开新窗口的链接功能有什么问题?