亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JS+WCF實現(xiàn)進度條實時監(jiān)測數(shù)據(jù)加載量的方法詳解

 更新時間:2017年12月19日 13:49:17   作者:Francis-李鑫超  
這篇文章主要介紹了JS+WCF實現(xiàn)進度條實時監(jiān)測數(shù)據(jù)加載量的方法,結(jié)合實例形式分析了大量數(shù)據(jù)導(dǎo)入過程中前臺js與后臺WCF交互實現(xiàn)實時顯示加載進度的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了JS+WCF實現(xiàn)進度條實時監(jiān)測數(shù)據(jù)加載量的方法。分享給大家供大家參考,具體如下:

背景

由于項目中需要導(dǎo)入大量數(shù)據(jù)到memcache中

需要用WCF調(diào)取11萬條數(shù)據(jù),由于那邊多級聯(lián)查和排序,所以比較慢(1分鐘左右)

同時這邊需要對數(shù)據(jù)進行處理,合并成2萬條數(shù)據(jù),然后存儲,需要一定時間(也是1分鐘左右)

總之,完成這個數(shù)據(jù)導(dǎo)入一共需要1分30秒左右

這時候,需要一個進度條來實時監(jiān)測完成的數(shù)據(jù)量

(之前用的是一個動態(tài)圖,不能知道程序目前的完成量,甚至不知道它是不是卡住了,只能等著)

功能

1.開辟線程,用于加載數(shù)據(jù),處理數(shù)據(jù)
2.前臺實時讀取后臺數(shù)據(jù),并顯示

代碼

view-html

@* 數(shù)據(jù)準(zhǔn)備進度條 *@
  <div id="container">
    <div class="content">
      <h1>數(shù)據(jù)準(zhǔn)備</h1>
    </div>
    <!-- Progress bar -->
    <div id="progress_bar" class="ui-progress-bar ui-container">
      <div class="ui-progress" style="width: 3%;">
        <span class="ui-label" style="display: none;">完成量<b class="value">3%</b></span>
      </div>
    </div>
    <!-- /Progress bar -->
    <div class="content" id="main_content" style="display: none;">
      <p>數(shù)據(jù)準(zhǔn)備完成!</p>
    </div>
  </div>

view-js

$(function () {
    $('#initialization').click(function () {
      $.messager.confirm('提示', '是否要進行數(shù)據(jù)初始化?', function (r) {
        if (!r) {
          return;
        }
        else {
          $('#container').show();
          var t1 = window.setInterval(process_bar, 1500);
        }
      });
    });
});
function process_bar() {
    $.ajax({
      type: "POST",
      async: true,
      url: "/Paper/LoadData",
      success: function (result) {
        $('#progress_bar .ui-progress').animateProgress(result);
        if (result =="100") {
          $('#main_content').slideDown();
          $('#fork_me').fadeIn();
          setTimeout(function () { $('#container').hide();; }, 1500);
          window.clearInterval(t1);
        }
      }
    })
}

controller

static bool flag = true;
public int LoadData()
{
  int result = Ipaperbll.LoadDataAmount();
  if (flag)
  {
    Thread thread = new Thread(new ThreadStart(ThreadLoadData));
    thread.Start();
    flag = false;
  }
  return result;
}
private void ThreadLoadData()
{
  Ipaperbll.initializeData();
}

后臺

static int load_data_amount;//當(dāng)前數(shù)據(jù)準(zhǔn)備量
public bool initializeData()
{
  bool flag = false;  //定義返回值
  //獲得數(shù)據(jù)
  //code....code ....code....
  load_data_amount = 5;//完成工作量
  int page = 0;
  int amount = 50000;//一次獲取數(shù)據(jù)量不能超過10萬
  while (page * amount == list.Count)
  {
    //code....code ....code....
    load_data_amount = load_data_amount + 5;
  }
  load_data_amount = 50;//讀取數(shù)據(jù)默認(rèn)的工作量
  double totalamount = list.Count();
  foreach (var item in list)
  {
    //code....code ....code....
    load_data_amount = Convert.ToInt32((1 - (totalamount--) / double.Parse(list.Count().ToString())) * 50) + 50;//根據(jù)數(shù)據(jù)改變的完成工作量
  }
  load_data_amount = 100;//完成工作量
  flag = true;
  return flag;
}
//返回當(dāng)前準(zhǔn)備數(shù)據(jù)量
public int LoadDataAmount() {
  return load_data_amount;
}

問題 & 解決

1.進度條生成

解決:使用網(wǎng)上的demo,css+js可以動態(tài)生成,改變數(shù)據(jù)即可

2.線程問題

解決:開始是監(jiān)測使用線程,后來改成處理數(shù)據(jù)使用線程

3.實時監(jiān)測問題

解決:處理數(shù)據(jù)使用線程自動運行,前臺使用ajax不斷查詢后臺的一個變量load_data_amount

4.ajax報錯問題

注意是返回值的類型,以及是result還是result.d,不同情況下是不一樣的

5.數(shù)據(jù)類型問題

解決:讀取數(shù)據(jù)完成的百分比,是用 完成量/所有量 得到的,這里的數(shù)一直算不對,是因為int類型承受不住11萬的運算以及之后的小數(shù),用double和float可以

小結(jié)

本來想著開個線程,加個變量,返回前臺,加一個進度條,讀取變量就OK了

但是中間的這個MVC,這個Spring,這個接口,之前的方法各種不好使,以及在它們下面的運算,ajax……一個一個分開解決,最后還是解決了

分而治之,逐個解決,測試就好

另外,框架和合作在帶來便利的同時,中間的限制和bug也會讓你的效率下降

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript時間與日期操作技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

相關(guān)文章

  • Chrome擴展頁面動態(tài)綁定JS事件提示錯誤

    Chrome擴展頁面動態(tài)綁定JS事件提示錯誤

    開發(fā)Chrome擴展時,頁面的popup.html中需要js的時候,直接將JS寫在動態(tài)綁定JS事件會提示錯誤,下面有個不錯的解決方法,大家可以參考下
    2014-02-02
  • js操作table示例(個人心得)

    js操作table示例(個人心得)

    有一個表格,然后有4個輸入框,一個合并按鈕,輸入框是這樣的,從第幾行到第幾行,從第幾列到第幾列,然后點擊按鈕,合并
    2013-11-11
  • javascript實現(xiàn)放大鏡功能

    javascript實現(xiàn)放大鏡功能

    這篇文章主要為大家詳細(xì)介紹了javascript入門之實現(xiàn)放大鏡功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 8 行 Node.js 代碼實現(xiàn)代理服務(wù)器

    8 行 Node.js 代碼實現(xiàn)代理服務(wù)器

    JavaScript 前后端通吃,在全棧開發(fā)領(lǐng)域具有獨特的優(yōu)勢。今天就來看看作為服務(wù)端語言的 JavaScript,完成一個簡單的代理服務(wù)器功能是多么容易。
    2016-12-12
  • 基于JavaScript繪制動態(tài)花束的示例代碼

    基于JavaScript繪制動態(tài)花束的示例代碼

    p5.js 是一個JavaScript的函數(shù)庫,它在制作之初就和Processing有同樣的目標(biāo)。本文將利用p5.js 制作出一束動態(tài)花束,感興趣的可以嘗試一下
    2022-06-06
  • 詳解javascript 變量提升(Hoisting)

    詳解javascript 變量提升(Hoisting)

    這篇文章主要介紹了詳解javascript 變量提升(Hoisting),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • js下用eval生成JSON對象

    js下用eval生成JSON對象

    在使用eval生成JSON對象時,一定要注意添加一對圓括號
    2010-09-09
  • js+xml生成級聯(lián)下拉框代碼

    js+xml生成級聯(lián)下拉框代碼

    js+xml生成級聯(lián)下拉框代碼,需要的朋友可以參考下
    2012-07-07
  • JS實現(xiàn)判斷有效的數(shù)獨算法示例

    JS實現(xiàn)判斷有效的數(shù)獨算法示例

    這篇文章主要介紹了JS實現(xiàn)判斷有效的數(shù)獨算法,結(jié)合實例形式分析了javascript數(shù)獨判斷的原理及相關(guān)算法實現(xiàn)、使用操作技巧,需要的朋友可以參考下
    2019-02-02
  • Bootstrap table表格簡單操作

    Bootstrap table表格簡單操作

    這篇文章主要為大家詳細(xì)介紹了Bootstrap table表格簡單操作的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02

最新評論