簡體   English   中英

加載時將ajax / xhr內容流式傳輸到頁面

[英]Stream ajax/xhr content into page while loading

XHR / AJAX調用正在加載時,是否可以將內容“流式傳輸”到頁面中? 我已經建立了一個基於REST的Java servlet(Restlet),並使用JSP進行模板制作,並且正在使用JavaScript通過對RESTlet的Dojo XHR調用生成所有內容。 不利的一面是,我在等待頁面元素異步完成加載時,它們不顯示。 在本地不是問題,但是如果我處在3G不好的區域,即使只有60 KB的SSH進行動態加載也會花費一些時間,那么一些JSON提取的大小就會減少1-6 MB。

是的,我意識到JSON沒有訂單保證。

我想在下載內容時呈現內容,而不是等待內容完成異步獲取,然后在xhr請求“加載”后調用函數以呈現內容。

例:

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);
}

代替加載:function(data){}在加載函數流時,我想要類似的東西。

您的問題有些混亂,但是...如果60K占用大量時間,您將不得不忍受。 對於大型傳輸,要在其余部分完成時看到傳輸的開始,請將大型請求分解為較小的請求。

更新:我之前沒有提到這一點,因為這涉及很多重構。 但是,我相信您可以使用WebSocket來實現流式傳輸。 但是,我之前沒有提到它,因為我不確定流式傳輸長JSON是否真正有幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM