javascript - JS/HTML - 单页应用程序 - 取消异步操作

标签 javascript html ajax asynchronous

我正在处理单页应用程序。我第一次构建正确的单页应用程序并遇到了一些问题。


每个页面都有一组可以触发的异步操作。这些操作最多可能需要 30 秒。

用户很可能会更改页面,导致异步操作在完成时失败。

每次页面更改时都会重新呈现页面 HTML,因此由于缺少 DOM 元素和/或其他资源/变量而导致操作失败。变量和其他资源也可能由于状态的变化而变化。

您通常如何处理此类问题?


我相信取消正在进行的请求几乎是不可能的,除非它被分成检查点,在继续之前进行检查。

我想一些选择是:

  1. 事件页面 检查结束每个函数。这必须在与每个资源交互之前在检查点完成,以防止不希望的行为。

  2. 捕获异常并让它们静静地失败


有什么想法吗? :)

最佳答案

使用事件?当您想要取消请求时发出一个事件,并让请求监听该事件/准备好优雅地处理它的停止。

function Potato {
  this.running = true;
}

Potato.prototype.stop = function () {
  this.running = false;
}

Potato.prototype.dostuff = function () {
  var things = [1, 2, 3];

  Object.keys(things).forEach(function(k) {
    if (!this.running) {
      break;
    }
    console.log(k);
  });
}

var potato = new Potato;
potato.on('stop', potato.stop);
this.emit('stop');

抱歉,代码不是很干净,但你明白了吗?

关于javascript - JS/HTML - 单页应用程序 - 取消异步操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14650670/

相关文章:

javascript - 如何根据内容动态调整 Twitter Bootstrap 模式的大小

javascript - 单击 ajax 后无法重新加载 fullcalendar div

jquery - 如何将对象数组传递给 webAPI 列表

javascript - 是否可以找到设置元素属性的 javascript?

javascript - NodeJS函数被socketio事件中断

javascript - 如何在 React Native 中渲染 BULLET 字符?

html - 为什么 XHTML 语法在网页中应用如此广泛?

javascript - 通过 pm2 从 nodejs 应用程序运行终端命令

html - 使用clear :both时空间大

javascript - 使用 Ajax 和 SQL 时,数据库中的图像未显示在我的 HTML 中