javascript - 如何在 JavaScript 中管理复杂的异步处理?

标签 javascript jquery ajax asynchronous

我正在启动一个包含多个过程的 Web 应用程序,这需要一些时间。 为了减少加载时间,我想实现如下异步处理:

loadXML()-----
              \
loadCanvas()---setupCanvas()
                            \
setupYoutubePlayer()---------startApplication()

也就是说,当页面加载时,我想启动loadXML()loadCanvas()setupYoutubePlayer() 同时触发 setupCanvas()loadXML()loadCanvas() 完成,setupApplication()setupCanvas() 之后触发,并且 setupYoutubePlayer() 完成。

loadXML()setupCanvas()包含AJAX处理,setupYoutubePlayer()包含API访问,需要API指定的回调函数(onYouTubeIframeAPIReady())。

经过几天的谷歌搜索,我发现 jQuery.DefferedAsync.js .说到 Deffered,我可以包装所有 Deferred.promise()Deferred.resolve() 处理,但我没有找到简单的解决方案 使用 when()then() 实现这个嵌套的异步处理。 至于 Async.js,我不知道如何处理 setupYoutubePlayer()

我错过了什么?还是在这种情况下还有其他知识? 请帮忙。谢谢。

最佳答案

这非常简单,即使只有 jQuery promises(假设 1.8+)你也可以这样做:

var xml = loadXML();
var canvas = loadCanvas();
var youtubePlayer = setupYoutubePlayer();
$.when(
    $.when(xml, canvas).then(setupCanvas),
    youtubePlayer
).then(startApplication);

关于javascript - 如何在 JavaScript 中管理复杂的异步处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22346345/

相关文章:

javascript - 当类在表单提交中相同时,按钮和跨度有什么区别。?

javascript - 在 React JS 的文本字段中打印 JSON 数据

javascript - 如何使一个 div 中的三个表在调整大小时不重叠?

c# - 每次访问更改背景图像

jquery - 应用对数动画

javascript - 同一页面上的多个 Recaptcha 在提交失败时消失?

javascript - 是否可以优化 Javascript 客户端搜索?

javascript - Javascript for 循环中的 Ajax 请求

javascript - jQuery UI slider - 已预定义 'pips'

javascript - jQuery AJAX make 命令呈现 404 结果