我的新聞JSON數據是這樣的:什麼更有效:每次發出ajax請求或切入func的結果?
{
"news": [
{"title": "some title #1","text": "text","date": "27.12.15 23:45"},
{"title": "some title #2","text": "text","date": "26.12.15 22:35"},
...
]
}
我需要一定數量的這份名單中,依賴於在函數的參數。據我所知,它被稱爲分頁。 我可以得到ajax響應並立即切片。所以每次調用該函數時 - 每次都發出ajax請求。 像這樣:
function showNews(page) {
var newsPerPage = 5,
firstArticle = newsPerPage*(page-1);
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
var newsArr = JSON.parse(xhr.responseText),
;
newsArr.news = newsArr.news.slice(firstArticle, newsPerPage*(page));
addNews(newsArr);
}
};
xhr.open("GET", url, true);
xhr.send();
或者,我可以將所有結果newsArr和切它在附加功能addNews,通過網頁進行排序。
function addNews(newsArr, newsPerPage) {
var pages = Math.ceil(amount/newsPerPages), // counts number of pages
pagesData = {};
for(var i=0; i<=pages; i++) {
var min = i*newsPerPages, //min index of current page in loop
max = (i+1)*newsPerPages; // max index of current page in loop
newsArr.news.forEach(createPageData);
}
function createPageData(item, j) {
if(j+1 <= max && j >= min) {
if(!pagesData["page"+(i+1)]) {
pagesData["page"+(i+1)] = {news: []};
}
pagesData["page"+(i+1)].news.push(item);
}
}
所以,簡單的問題是哪個變種更有效?第一個加載服務器,第二個加載用戶的內存。你會在我的情況下選擇什麼? :)
感謝您的答案。我明白我想要什麼。但我不能選擇最好的
爲什麼你不改變你的服務只返回n個記錄而不是在UI上切分數組? – gurvinder372
gurvinder372,你是對的,但我需要這兩種方法中的一種。 –
在這種情況下,有多少取決於您的服務將返回多少記錄。如果它小於1000,那麼一個服務呼叫就可以,因爲有效載荷不會很大,你可以選擇2。 – gurvinder372