This article mainly introduces the method of JS WCF to realize the progress bar to monitor the data loading amount in real time. It combines the example form to analyze the relevant operation skills of the interaction between the front-end js and the background WCF in the process of importing a large amount of data to realize the real-time display of the loading progress, which is required. Friends can refer to the following
The example of this article describes the method of JS WCF realizing the progress bar to monitor the data loading amount in real time. Share it with everyone for your reference, the details are as follows:
Background
Due to the need to import a large amount of data into memcache in the project
Need to use WCF to retrieve 110,000 pieces of data. Due to the multi-level query and sorting there, it is relatively slow (about 1 minute)
At the same time, the data needs to be processed here and merged into 20,000 pieces of data. , and then storage, which takes a certain amount of time (also about 1 minute)
In short, it takes about 1 minute and 30 seconds to complete the data import
At this time, a progress bar is needed to monitor the completion in real time Amount of data
(I used a dynamic graph before, so I can’t know the current completion amount of the program, or even whether it is stuck, I can only wait)
Function
1. Open a thread for loading data and processing data
2. The front desk reads the background data in real time and displays
Code
view-html
@* 数据准备进度条 *@ <p id="container"> <p class="content"> <h1 id="数据准备">数据准备</h1> </p> <!-- Progress bar --> <p id="progress_bar" class="ui-progress-bar ui-container"> <p class="ui-progress" style="width: 3%;"> <span class="ui-label" style="display: none;">完成量<b class="value">3%</b></span> </p> </p> <!-- /Progress bar --> <p class="content" id="main_content" style="display: none;"> <p>数据准备完成!</p> </p> </p>
view-js
$(function () { $('#initialization').click(function () { $.messager.confirm('提示', '是否要进行数据初始化?', 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(); }
Background
static int load_data_amount;//当前数据准备量 public bool initializeData() { bool flag = false; //定义返回值 //获得数据 //code....code ....code.... load_data_amount = 5;//完成工作量 int page = 0; int amount = 50000;//一次获取数据量不能超过10万 while (page * amount == list.Count) { //code....code ....code.... load_data_amount = load_data_amount + 5; } load_data_amount = 50;//读取数据默认的工作量 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;//根据数据改变的完成工作量 } load_data_amount = 100;//完成工作量 flag = true; return flag; } //返回当前准备数据量 public int LoadDataAmount() { return load_data_amount; }
Problems & Solutions
##1. Progress bar generation
Solution: Use the online demo, css js can Dynamically generated, just change the data2. Thread problem
Solution: At first, the thread was used for monitoring, and later it was changed to the thread used for data processing3. Real-time monitoring problem
Solution: Process data using threads to run automatically, and the front desk uses ajax to continuously query a variable load_data_amount in the background4.ajax error reporting problem
Pay attention to the type of return value, and whether it is result or result.d, which is different in different situations5. Data type issues
Solution: The percentage of completion of reading data is obtained by using the completion amount/all amounts. The number here is always wrong because the int type cannot withstand the operation of 110,000 and subsequent decimals. Use double and float canSummary
I originally thought of opening a thread, adding a variable, returning to the front desk, adding a progress bar, and reading the variable. OKBut the MVC in the middle, this Spring, this interface, the previous methods were all difficult to use, and the operations under them, ajax... were solved one by one, and finally solvedDivide and conquer, solve them one by one, and just testIn addition, while frameworks and cooperation bring convenience, the limitations and bugs in the middle will also reduce your efficiencyThe above is I compiled it for everyone, I hope it will be helpful to everyone in the future. Related articles:How to use jQuery to solve the problem that dynamically added elements cannot trigger binding events
How to get Excel content in Node
How to send requests to the intermediate service layer in node (detailed tutorial)
The above is the detailed content of How to monitor data loading in JS+WCF. For more information, please follow other related articles on the PHP Chinese website!

Different JavaScript engines have different effects when parsing and executing JavaScript code, because the implementation principles and optimization strategies of each engine differ. 1. Lexical analysis: convert source code into lexical unit. 2. Grammar analysis: Generate an abstract syntax tree. 3. Optimization and compilation: Generate machine code through the JIT compiler. 4. Execute: Run the machine code. V8 engine optimizes through instant compilation and hidden class, SpiderMonkey uses a type inference system, resulting in different performance performance on the same code.

JavaScript's applications in the real world include server-side programming, mobile application development and Internet of Things control: 1. Server-side programming is realized through Node.js, suitable for high concurrent request processing. 2. Mobile application development is carried out through ReactNative and supports cross-platform deployment. 3. Used for IoT device control through Johnny-Five library, suitable for hardware interaction.

I built a functional multi-tenant SaaS application (an EdTech app) with your everyday tech tool and you can do the same. First, what’s a multi-tenant SaaS application? Multi-tenant SaaS applications let you serve multiple customers from a sing

This article demonstrates frontend integration with a backend secured by Permit, building a functional EdTech SaaS application using Next.js. The frontend fetches user permissions to control UI visibility and ensures API requests adhere to role-base

JavaScript is the core language of modern web development and is widely used for its diversity and flexibility. 1) Front-end development: build dynamic web pages and single-page applications through DOM operations and modern frameworks (such as React, Vue.js, Angular). 2) Server-side development: Node.js uses a non-blocking I/O model to handle high concurrency and real-time applications. 3) Mobile and desktop application development: cross-platform development is realized through ReactNative and Electron to improve development efficiency.

The latest trends in JavaScript include the rise of TypeScript, the popularity of modern frameworks and libraries, and the application of WebAssembly. Future prospects cover more powerful type systems, the development of server-side JavaScript, the expansion of artificial intelligence and machine learning, and the potential of IoT and edge computing.

JavaScript is the cornerstone of modern web development, and its main functions include event-driven programming, dynamic content generation and asynchronous programming. 1) Event-driven programming allows web pages to change dynamically according to user operations. 2) Dynamic content generation allows page content to be adjusted according to conditions. 3) Asynchronous programming ensures that the user interface is not blocked. JavaScript is widely used in web interaction, single-page application and server-side development, greatly improving the flexibility of user experience and cross-platform development.

Python is more suitable for data science and machine learning, while JavaScript is more suitable for front-end and full-stack development. 1. Python is known for its concise syntax and rich library ecosystem, and is suitable for data analysis and web development. 2. JavaScript is the core of front-end development. Node.js supports server-side programming and is suitable for full-stack development.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

SublimeText3 Linux new version
SublimeText3 Linux latest version

SublimeText3 Chinese version
Chinese version, very easy to use