4
KnockoutJS를 이해하려고합니다. 나는 어떤 코드를 실행하는 동안 회 전자를 원한다. 그런데 왜 회 전자는 작동 후에 만 나타 납니까?knockout.js. 로딩 스피너는 작업 후에 만 나타납니다.
<img data-bind="visible: isLoading" src="loading.gif">
<a href="#" data-bind="click: someOperation">Click</a>
<script type="text/javascript" src="knockout-2.2.1.js"></script>
<script>
var ViewModel = function() {
var self = this;
self.isLoading = ko.observable(false);
self.someOperation = function() {
self.isLoading(true);
for(i = 0; i < 30000; i++)
console.log('lol');
self.isLoading(false);
};
};
ko.applyBindings(new ViewModel());
</script>
감사합니다, 표도르
그것은 setTimeout과 함께 작동합니다. 하지만 console.log()에서만 작동하지 않습니다. 또한 어떤 루프에서도 작동하지 않습니다. 이 피들보기 http://jsfiddle.net/xAs5K/ – user2360833
바이올린이 작동하지만 루프가 매우 빠르며 console.log가 비동기식으로 발생합니다. 즉'self.isLoading (false)'가'console.log ('lol')'이전에 발생합니다. for (i = 0; i <30000; i ++) 줄에 중단 점을 넣으면로드하는 이미지가 표시됩니다. –
뭔가를하기 전에 비동기가 끝날 때까지 기다리고 싶다면 약속을 살펴보십시오. [http://documentup.com/kriskowal/q/](q.js는 좋은 도서관입니다) –