我正在开发一个 JavaScript 驱动的网站,在那里我将有很多需要按特定顺序执行的东西。很多东西都涉及动画和 AJAX 加载。一些伪代码可能如下所示:
- 加载 JSON 格式的数据
- 使用加载的 JSON 数据生成 HTML 元素并将它们呈现在 div 中
- 使用 jQuery UI 滑块使 div 内的元素可滚动
- 随机化一个介于 1 和加载元素总数之间的数字
- 使 jQuery UI 滑块滚动(动画)到表示随机数的元素,持续时间为 500 毫秒
- 加载更多 JSON 格式的数据
- 替换页面上的其他元素
- 等等...
其中的每一步都包含在一个函数中——一个函数加载 JSON 数据,另一个函数生成 HTML 元素,第三个函数初始化 jQuery UI 滑块等等。将代码封装在函数中使代码更易于阅读,但最重要的是,我希望能够根据页面上发生的情况以不同的顺序调用函数,并且我想确保一个函数在下一个被执行。
如果只有不涉及 AJAX 或 jQuery 动画的常规函数,我会一个接一个地执行我想要执行的函数。问题是我需要等待动画和数据检索功能完成才能继续。为了帮助我,jQuery 中的动画和 AJAX 方法允许我发送回调。但这就是我迷路的地方。
我想要它做的是以下内容:
- 加载 JSON 数据。如果加载成功,继续...
- 生成 HTML 元素
- 使元素可滚动
- 随机化一个介于 1 和加载元素总数之间的数字并将其传递给...
- 使 jQuery 滑块滑动(动画)到元素的函数。动画结束时...
- 加载更多 JSON 格式的数据。如果加载成功,继续...
- 替换页面上的其他元素
理想的情况是,如果我可以在一个地方设置这个事件序列/事件链,例如在事件处理程序中。如果我想以不同的顺序调用函数或不调用所有函数,我只需设置一个不同的序列/链。一个例子可能是:
- 随机化一个介于 1 和加载元素总数之间的数字并将其传递给...
- 使 jQuery 滑块滑动(动画)到元素的函数。动画结束时...
这意味着我必须控制每个步骤中的回调。
我希望你明白我在找什么。我想从一个函数控制整个执行序列。这个功能将是“管弦乐队的指挥”,而所有其他功能将是管弦乐队的不同乐器部分。这个指挥的功能需要耳朵,所以当小提琴家完成独奏时它可以听到,并且可以告诉喇叭开始演奏。请原谅我的陈词滥调,但我希望它能让我更容易理解我想要做什么。
提前致谢!/托马斯