【发布时间】:2015-06-06 19:02:14
【问题描述】:
我在 html 中有很多 div。每个 div 包含动画或一些 js 代码,这些代码仅在此 div 可见时调用:
<button id='start' class='start'>Start</button>
<div class="step1 later">
<div class='red later'>Show first</div>
<div class='aqua later'>Show later</div>
</div>
<div class="step2 later">
<div class='green later'>Show together</div>
<div class='yellow later'>Show together</div>
</div>
我的目标是显示div 和step1 类并调用一些js,然后显示step2 等等。它看起来像滑块。对于这个例子,我想显示step1,然后显示div 和red 类,延迟后我想显示aqua。接下来,我们转到step2 并立即显示两个div:yellow、green。我决定为此使用 Promise (Q.js)。这是我的代码:
$(function () {
var currentStep = 1,
handlers = {};
$('#start').click(function() {
for(var i = 0; i < 2; i++) {
showStep(currentStep + i);
}
});
function showStep(step) {
var name = 'step' + step;
$('.' + name).show();
handlers[name]();
}
handlers.step1 = function() {
Q().then(function() {
$('.notification').html('Step1 started');
})
.delay(2000)
.then(function() {
showElem('red');
})
.delay(2000)
.then(function() {
showElem('aqua');
});
};
handlers.step2 = function() {
Q().then(function() {
$('.notification').append('Step2 started');
})
.delay(2000)
.then(function() {
showElem('green');
showElem('yellow');
});
};
function showElem(classSelector) {
$('.' + classSelector).fadeIn(100);
}
});
所有动画和延迟作品都发现除了一件事。我的代码不会等待一步完成,处理程序几乎同时启动。
演示:JSBIN
【问题讨论】:
-
你的意思是像this?
标签: javascript promise q