使这些javascript函数更具可移植性

问题描述 投票:2回答:3

我缺少对javascript函数流控制的一些基本了解...

我创建了一个jquery幻灯片。节目分为逻辑部分,每个部分由一个函数控制(以后可以轻松添加部分)...

function myslideshow() {
    section1();
    section2();
    section3();
}

每个部分都有由jquery语句,动画,定时内容...等等组成的多个功能。

function section1() {
    firstPart();
    setTimeout('secondPart()',5000);
    setTimeout('thirdPart()',6000);
}

现在这是我的问题...我想在section1()内定义函数“ firstPart(),secondPart(),thirdPart()”。我出于各种原因想要这样做:

  1. 每个部分在逻辑上可能有各自的“部分”
  2. 本节的可移植性
  3. 因此,我希望将该部分及其所有相应部分保留在该部分中。

我似乎无法使其正常工作……当我在该节内定义“部件”时,所有功能均同时运行。

所以理想情况下,我想拥有的是:

function section1() {
    firstPart();
    setTimeout('secondPart()',5000);
    setTimeout('thirdPart()',6000);

    function firstpart(){  
         //some code here
    }

    function secondPart(){  
         //some code here
    }

    function thirdPart(){  
         //some code here
    }

}

但是再次不能正常解决;实际上它正常工作,我只是没有正确实现它!不知道我是否需要利用函数回调(甚至不知道如何以“可扩展的方式”进行设置)。

另一个需要改进的地方:setTimeouts用于确保secondPart在firstPart之后运行...想知道是否有更好的方法来“等待”上一个函数(带有jquery动画)来完成。

我非常感谢您提供的任何指导。谢谢!

我缺少对javascript函数流控制的一些基本理解。我创建了一个jquery幻灯片。演出分为逻辑部分,每个部分都由一个...

javascript jquery control-flow
3个回答
4
投票

您不正确地调用“ setTimeout()”:


0
投票

一种方法是创建一个匿名“部分”的列表,然后只从控制函数中依次调用它们。每个动画列表的最终回调将依次调用下一部分。这是一个例子:


0
投票
不确定我是否回答正确的问题,但是我发现模块模式是设置命名空间和结构对象的一种简便方法:
© www.soinside.com 2019 - 2024. All rights reserved.