Javascript通过JSON控制数据流

Javascript control data flow by JSON

本文关键字:控制数据 数据流 控制 JSON 通过 Javascript      更新时间:2023-09-26

我有一个web应用程序使JQuery + KnockOut从web服务读取JSon格式的所有数据。每秒钟用以下代码重新加载和重新解析数据(有三个Json流):

setInterval(function () {
    loadCommon();
    loadLive();
    loadDashboard();
}, 1000);

问题是当数据从页面本身更新时。事实上,我有一个控件(比如一个文本框),它将数据发送到服务。它验证它,并在情况下更新后面的代码库。这样做的代码很简单:

$('#textbox-1').blur(function () {
    savePost("Dash_textbox1:" + $('#textbox-1').val());
});
function savePost(data) {
    "use strict";
    console.log("POOOOOOOOSSSSSSSSSTTTTT : " + data);
    $.ajax({
        url: save_data_url,
        type: 'POST',
        data: data
    });
}

一切都很正常,除了一件事。让我们假设一切都开始于上午08.00.01 ....请看这里:

08.00.01 AM >>> Interface loaded the LoadCommon,LoadLive,LoadDashboard has called >>> textbox-1 has 10 as initial value >>> FINE
08.00.02 AM >>> Interface loaded load again >>> textbox-1 has 10 >>> FINE
08.00.03 AM >>> Interface loaded load again >>> textbox-1 has 10 >>> FINE
08.00.04 AM >>> Interface loaded load again >>> textbox-1 has 10 >>> FINE
08.00.045 AM >>> User put the value of 5 in textbox-1 and the data will send to the webservice >>> textbox-1 has 5 (the user change) >>> FINE
08.00.5 AM >>> Interface loaded load again >>> textbox-1 has 10 because the service does not finish to process the 08.00.045 data sent to post >>> WROOOOONG
08.00.6 AM >>> Interface loaded load again >>> textbox-1 has 5 because the service have finish to process the 08.00.045 data sent to post >>> FINE

的视觉效果是,文本框1改变它的值迅速从10到5后,再一次10,再一次5。我在web服务上没有电源,也可能发生(出于某种原因)服务没有更新数据到5,所以它是正确的再次放在10,所以我如何处理Javascript流?

谢谢

像这样保护您的数据更改:

var processing_update = false;
setInterval(function () {
  if (processing_update) return;
  loadCommon();
  loadLive();
  loadDashboard();
}, 1000);
function savePost(data) {
  "use strict";
  console.log("POOOOOOOOSSSSSSSSSTTTTT : " + data);
  processing_update = true;
  $.ajax({
    url: save_data_url,
    type: 'POST',
    data: data,
    complete: function() {
      // all done
      processing_update = false;
    }
  });
}