javascript - jQuery 中的嵌套回调

标签 javascript jquery css

<分区>


想改进这个问题吗? 通过 editing this post 添加细节并澄清问题.

关闭 9 年前

我正在尝试创建动画 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() , 避免嵌套回调:

jsFiddle

$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 :

jsFiddle

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/

上一篇:html - 从div中删除滚动条

下一篇:html - 文本区域顶部的位置标签

相关文章:

javascript - 如何从 CDN 使用 requirejs 加载 ace 编辑器?

javascript - angular handle @sign in view path 如何处理?

javascript - 每 5 秒使用 jquery/javascript 读取 XML

表格消失后的 HTML 内容

html - 如何实现子菜单效果?

css - 数字出现在 RTL 中的内容 CSS 之前

javascript - Vue 3 推荐的 TypeScript TSConfig compilerOptions TARGET 设置?

javascript - JS 函数创建并插入数组 - 只有第一个元素是 NaN

javascript - JQUERY 方法中当前上下文中不存在 name 参数

javascript - 使用 jQuery 传递变量