javascript - jQuery 中意外的回调行为

标签 javascript jquery callback

我希望以下代码运行如下: 1) 迭代for循环直至完成。 2)执行回调函数

相反,它在每次迭代后执行回调。是范围问题吗?我是否误解了回调的控制流程?

function flipPages(direction,n,duration,callback){
    for(i=0;i<n;i++){
        setTimeout(function() { $('#flipbook').turn(direction);}, ((i+1) * duration));
    }
    callback;
}

flipPages("next",4,1000,flipPages("previous",4,2000));

最佳答案

除了所有这些相关评论之外,我猜您还想做这样的事情:

function flipPages(direction, n, duration){
    for(var i = 0, l = n; i < n; i++){
        setTimeout(function() { 
            $('#flipbook').turn(direction);
            if (!(--n)) {
                flipPages({
                    // direction switch
                    next: "previous",
                    previous: "next"
                }[direction], n, duration);
            }
        }, ((i + 1) * duration));
    }
}

flipPages("next", 4, 1000);

更新:无需使用回调,直接使用 flipPages

关于javascript - jQuery 中意外的回调行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19228158/

相关文章:

javascript - 如何在没有连字符的情况下让 jQuery UI 自动完成工作

javascript - 所有 Node "callback"函数都可能是异步的吗?

node.js - 我应该如何在 Node js 中使用 Promise 进行 db + http 调用

javascript - if 和 ifnot knockout 语句在同一行

javascript - 将文本区域中的文本设置为粗体

javascript - 将脚本 $.get() 的函数结果分配给任意变量

c# - 下载后启动javascript

javascript - 从 cookie 中读取特定值

javascript - 停止传播事件监听器单击,但仍允许元素内发生其他单击事件

javascript - 异步递归函数结束后的回调