1

我希望以下代码按如下方式运行: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));
4

1 回答 1

1

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

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直接使用。

于 2013-10-07T15:13:10.907 回答