加载

时间:2018-03-29 18:48:59

标签: java rest dojo xmlhttprequest

有没有办法来"流"在加载XHR / AJAX调用时将内容放入页面?我已经设置了一个基于REST的Java servlet(Restlet),使用JSP进行模板化,并使用JavaScript通过对RESTlet的Dojo XHR调用生成所有内容。这样做的缺点是,当我等待页面元素异步完成加载时,它们不会显示。在本地没有问题,但是如果我在一个糟糕的3G区域中使用甚至60 KB的SSH可能需要一些时间来动态加载,那么一些JSON提取的大小就会减少1-6 MB。 / p>

是的,我发现JSON没有订单保证。

我想在下载内容时呈现内容,而不是等待内容完成异步提取,然后调用函数在xhr请求之后呈现它#34;加载"。

示例:

function getFinanceData() {
    aniPreload("on");
    var thePostData = "doWhat=getFinanceData";
    var xhArgs = {
        preventCache: true,
        url: getResource("Finance"),
        postData: thePostData,
        handleAs: "json",
        timeout: timeOutMilli,
        load: function (data) {
            putAssets(
                    data.qMerged[0],
                    data.bGames,
                    data.books,
                    data.dTools,
                    data.licenses,
                    data.assets
                    );
            naviButtonListener();
            aniPreload("off");
        },
        error: function (data, iostatus) {
            aniPreload("off");
            window.alert("xhrGet for FinanceData FAIL!, STATUS: " + iostatus.xhr.status + " (" + data + ")");
        }
    };
    dojo.xhrPost(xhArgs);
}

而不是load:function(data){}我想在加载函数流时使用。

1 个答案:

答案 0 :(得分:0)

你的问题有点混乱,但是......如果60K花费了相当多的时间,你将不得不忍受。对于大型转移,您希望在其余部分完成时看到转移的开始,将大请求分解为较小的转移。

更新:之前我没有提到过,因为会涉及很多重构。但是,我相信你可以使用WebSocket来实现流媒体方面。但是之前我没有提到它,因为我不确定流式传输长JSON会如何真正帮助...