<分区>
标签 javascript jquery css
我正在尝试创建动画 map 。
我有一些点落在我的 map 上,所有这些点都在回调中运行......
// Animate the drops
$marker.animate({
top : '100px'
}, 500, 'easeOutBounce', function(){
$america.animate({
top : '150px'
}, 500, 'easeOutBounce', function(){
$england.animate({
top : '80px'
}, 500, 'easeOutBounce', function(){
$australia.animate({
top : '300px'
}, 500, 'easeOutBounce');
});
});
});
http://jsfiddle.net/Liamatvenn/T3CTH/1/
这样做不好吗?这会占用访问者计算机上的更多资源吗?
最佳答案
这不是一个坏方法,但它很丑陋(这是主观的)并且可能变得难以维护。我会用 promise 对象清理它,用 .promise()
操作和 .then()
, 避免嵌套回调:
$marker.animate({
top : '100px'
}, 500, 'easeOutBounce').promise()
.then(function(){
return $america.animate({
top : '150px'
}, 500, 'easeOutBounce').promise();
})
.then(function(){
return $england.animate({
top : '80px'
}, 500, 'easeOutBounce').promise();
})
.then(function(){
return $australia.animate({
top : '300px'
}, 500, 'easeOutBounce').promise();
});
或者,您可以使用 queue :
var $queue = $("<div>");
$queue.queue(function(next){
$marker.animate({
top : '100px'
}, 500, 'easeOutBounce',next);
}).queue(function(next){
$america.animate({
top : '150px'
}, 500, 'easeOutBounce',next);
}).queue(function(next){
$england.animate({
top : '80px'
}, 500, 'easeOutBounce',next);
}).queue(function(next){
$australia.animate({
top : '300px'
}, 500, 'easeOutBounce',next);
}).dequeue();
关于javascript - jQuery 中的嵌套回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17749513/
相关文章:
javascript - 如何从 CDN 使用 requirejs 加载 ace 编辑器?
javascript - angular handle @sign in view path 如何处理?
javascript - 每 5 秒使用 jquery/javascript 读取 XML
javascript - Vue 3 推荐的 TypeScript TSConfig compilerOptions TARGET 设置?
javascript - JS 函数创建并插入数组 - 只有第一个元素是 NaN