Вы должны вызвать свою функцию startBar()
при успехе:
$(document).ready(function(){
let percentValue = 0,
progressBar = $('.progress-bar');
timer = setInterval(startBar, 500);
$.ajax({
url: url,
type: "GET",
dataType: "json",
beforeSend: function(){
startBar();
},
success: function(){
clearInterval(timer);
}
}).done(function(data){
alert("success");
startBar();
console.log(data);
}).fail(function(jqxhr, textStatus, error ){
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
});
function startBar(){
percentValue += 25;
progressBar.css("width", percentValue + "%").html(percentValue + "%");
}
});
Это похоже на лучшее решение до сих пор, должно использовать Визуальную Кисть и переместить два статических изображения при задвижении и панели. Что-то подобное этому описано в этом сообщении в блоге:
Используя анимированные страницы навигации в приложении WPF (переключенный на веб-архив, но это с 2008 так никакие обещания, если это - все еще лучшая техника).
Я нашел, что выполнение WPF анимаций улучшает значительно если не использование BitmapEffect
s. Попытайтесь отключить их в своем примере. Я заменил свои падающие тени полупрозрачными твердыми регионами с заливками градиента и улучшенной производительностью.
Я также услышал, что некоторые растровые эффекты увеличили производительность в более новых версиях (возможно, 3,5 SP1?), поскольку больше рендеринга было продвинуто к аппаратным средствам.
Если Вы будете работать с анимациями WPF достаточно долго, то Вы выясните, что средства управления большой площади действительно, на самом деле, приближаются, что Вы называете 'судорожным' способом. У меня была эта проблема даже с крошечными кнопками, которые должны были переместиться горизонтально в экран, и я, конечно, разочаровался в перемещении чего-либо большого (например, окно).