Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更新进度条?_Javascript_Jquery_Jquery Ui_Progress Bar - Fatal编程技术网

Javascript 如何更新进度条?

Javascript 如何更新进度条?,javascript,jquery,jquery-ui,progress-bar,Javascript,Jquery,Jquery Ui,Progress Bar,我正在尝试更新的值 初始化之后,我运行了一些循环。在每一次之后,我希望进度条更新其值。但它只在最后显示其最终值,因此我看不到每个步骤: $("#progressbar").progressbar(); for (i = 0; i < 10000000; i++) { // takes some time... } $("#progressbar").progressbar("value", 25); for (i = 0; i < 10000000; i++) { //

我正在尝试更新的值

初始化之后,我运行了一些循环。在每一次之后,我希望进度条更新其值。但它只在最后显示其最终值,因此我看不到每个步骤:

$("#progressbar").progressbar();

for (i = 0; i < 10000000; i++) {
  // takes some time...
}
$("#progressbar").progressbar("value", 25);

for (i = 0; i < 10000000; i++) {
  // takes some time...
}
$("#progressbar").progressbar("value", 50);

for (i = 0; i < 10000000; i++) {
  // takes some time...
}
$("#progressbar").progressbar("value", 75);

for (i = 0; i < 1000000000; i++) {
  // takes some time...
}
$("#progressbar").progressbar("value", 100);
$(“#progressbar”).progressbar();
对于(i=0;i<10000000;i++){
//需要一些时间。。。
}
$(“progressbar”).progressbar(“值”,25);
对于(i=0;i<10000000;i++){
//需要一些时间。。。
}
$(“progressbar”).progressbar(“值”,50);
对于(i=0;i<10000000;i++){
//需要一些时间。。。
}
$(“progressbar”).progressbar(“值”,75);
对于(i=0;i<100000000;i++){
//需要一些时间。。。
}
$(“#progressbar”).progressbar(“值”,100);

.

尝试将进度条值更改放在每个函数的末尾。

尝试将进度条值更改放在每个函数的末尾。

在Javascript中模拟用于测试目的的时间间隔的唯一可靠方法是使用setInterval和setTimeout。循环运行得太快

如果希望确保步骤按顺序执行,则可以这样做。只需将setTimeout调用替换为您实际想要执行的操作

function updateProgressbar($bar, value) {
    $bar.progressbar("value", value);
}

function step1() {
    setTimeout(function() {
    console.log('this is step 1');
    updateProgressbar($("#progressbar"), 25);
    step2();
  }, Math.random() * 2000 + 250);
}

function step2() {
    setTimeout(function() {
    console.log('this is step 2');
    updateProgressbar($("#progressbar"), 50);
    step3();
  }, Math.random() * 2000 + 250);
}

function step3() {
    setTimeout(function() {
    console.log('this is step 3');
    updateProgressbar($("#progressbar"), 75);
    step4();
  }, Math.random() * 2000 + 250);
}

function step4() {
    setTimeout(function() {
    console.log('this is step 4');
    updateProgressbar($("#progressbar"), 100);
  }, Math.random() * 2000 + 250);
}

$("#progressbar").progressbar();

console.log($("#progressbar").data('value'));

step1();

在这种情况下,在前一个步骤中调用每个步骤,以确保按1到4的顺序调用它们

另一方面,如果希望同时启动所有步骤(即独立的ajax请求),则可以这样做

function updateProgressbar($bar, step) {
    progress += step;
    $bar.progressbar("value", progress);
}

function step1() {
    setTimeout(function() {
    console.log('this is step 1');
    updateProgressbar($("#progressbar"), 25);
  }, Math.random() * 3000 + 1000);
}

function step2() {
    setTimeout(function() {
    console.log('this is step 2');
    updateProgressbar($("#progressbar"), 25);
  }, Math.random() * 3000 + 1000);
}

function step3() {
    setTimeout(function() {
    console.log('this is step 3');
    updateProgressbar($("#progressbar"), 25);
  }, Math.random() * 3000 + 1000);
}

function step4() {
    setTimeout(function() {
    console.log('this is step 4');
    updateProgressbar($("#progressbar"), 25);
  }, Math.random() * 3000 + 1000);
}

$("#progressbar").progressbar();

var progress = 0;

step1();
step2();
step3();
step4();


在本例中,所有四个步骤同时启动,但随机执行。updateProgressbar函数接收两个参数,第一个是progressbar的jQuery实例,第二个是进行中的增加。观察控制台以跟踪执行情况。

在Javascript中为测试目的模拟时间间隔的唯一可靠方法是使用setInterval和setTimeout。循环运行得太快

如果希望确保步骤按顺序执行,则可以这样做。只需将setTimeout调用替换为您实际想要执行的操作

function updateProgressbar($bar, value) {
    $bar.progressbar("value", value);
}

function step1() {
    setTimeout(function() {
    console.log('this is step 1');
    updateProgressbar($("#progressbar"), 25);
    step2();
  }, Math.random() * 2000 + 250);
}

function step2() {
    setTimeout(function() {
    console.log('this is step 2');
    updateProgressbar($("#progressbar"), 50);
    step3();
  }, Math.random() * 2000 + 250);
}

function step3() {
    setTimeout(function() {
    console.log('this is step 3');
    updateProgressbar($("#progressbar"), 75);
    step4();
  }, Math.random() * 2000 + 250);
}

function step4() {
    setTimeout(function() {
    console.log('this is step 4');
    updateProgressbar($("#progressbar"), 100);
  }, Math.random() * 2000 + 250);
}

$("#progressbar").progressbar();

console.log($("#progressbar").data('value'));

step1();

在这种情况下,在前一个步骤中调用每个步骤,以确保按1到4的顺序调用它们

另一方面,如果希望同时启动所有步骤(即独立的ajax请求),则可以这样做

function updateProgressbar($bar, step) {
    progress += step;
    $bar.progressbar("value", progress);
}

function step1() {
    setTimeout(function() {
    console.log('this is step 1');
    updateProgressbar($("#progressbar"), 25);
  }, Math.random() * 3000 + 1000);
}

function step2() {
    setTimeout(function() {
    console.log('this is step 2');
    updateProgressbar($("#progressbar"), 25);
  }, Math.random() * 3000 + 1000);
}

function step3() {
    setTimeout(function() {
    console.log('this is step 3');
    updateProgressbar($("#progressbar"), 25);
  }, Math.random() * 3000 + 1000);
}

function step4() {
    setTimeout(function() {
    console.log('this is step 4');
    updateProgressbar($("#progressbar"), 25);
  }, Math.random() * 3000 + 1000);
}

$("#progressbar").progressbar();

var progress = 0;

step1();
step2();
step3();
step4();


在本例中,所有四个步骤同时启动,但随机执行。updateProgressbar函数接收两个参数,第一个是progressbar的jQuery实例,第二个是进行中的增加。观察控制台以跟踪执行情况。

@Tushar:谢谢,但我想在某些操作(如循环或整个函数)后更新进度,而不是在某个时间间隔后更新进度。@Tushar:谢谢,但我想在某些操作(如循环或整个函数)后更新进度,而不是在一段时间间隔后。虽然这在理论上可以回答问题,但在此处包括答案的基本部分,并提供链接供参考。虽然这在理论上可以回答问题,但在此处包括答案的基本部分,并提供链接供参考。