我正在开发一个 Web 应用程序,由于性能问题严重依赖于 Ajax 功能。我试图在加载运行时间较长的模块时使每个页面的某些部分可用。
问题是我想尽快启动 Ajax 请求(在文档的开头)。这部分工作正常;问题是在极少数情况下,Ajax 调用会在我要加载 Ajax 数据的区域出现在页面上之前返回。这会导致无法加载数据。
为了解决这个问题,我开始在每个容器下方使用脚本标记来解析 JQuery 承诺,让代码知道该区域可用。
编辑:我想在数据可用后立即将数据加载到该区域中(在完整文档加载之前)。
当前的伪代码如下所示:
<head>
<script>
var areaAvailablePromise = new $.Deferred();
$.when(areaAvailablePromise, myAjaxFunction()).then(function(){
// load data into the element.
});
</script>
</head>
<!-- much later in the document -->
<div class="divIWantToLoadAjaxContentInto"></div>
<script>
areaAvailablePromise.resolve();
</script>
我的问题是:有没有更好的方法来处理这种情况?每个人都知道内联脚本会阻塞并且不利于性能。另外,我觉得这会导致代码混乱,到处都是微脚本标签。