2015-04-18 55 views
-3

首先,對不起,它不是很整潔,我仍然在學習JavaScript的繩索。我將如何使此代碼有效?

我在谷歌瀏覽器控制檯中運行這段代碼,但它需要太多的時間來運行它,有什麼我在做什麼,我可以修復,使其運行速度更快?

function snipebot(page, max_page, max_price){ 
$.getJSON('http://www.roblox.com/catalog/json?browse.aspx?Subcategory=2&Keyword=&CurrencyType=0&pxMin=0&pxMax=0&SortType=2&SortAggregation=0&SortCurrency=0&LegendExpanded=true&Category=2&PageNumber=' + page, function(data){ 
    $.each(data, function(index, item){ 
    if (item['BestPrice'] <= max_price){ 
    $.get('http://www.roblox.com/Item.aspx?id=' + item['AssetId'], function(data){ 
    var purchaseData = $($(data).find(".PurchaseButton")[0]).data(); 
    if (purchaseData['expectedPrice'] <= item['BestPrice']){ 
     $.post('/API/Item.ashx?rqtype=purchase&productID=' + purchaseData['productId'] + '&expectedCurrency=1&expectedPrice=' + purchaseData['expectedPrice'] + '&expectedSellerId=' + purchaseData['expectedSellerId'] + '&userAssetID=' + purchaseData['userassetId'], function(){ 
     console.log('[' + item['BestPrice'] + ']' + item['Name'] + item['AssetId'] + ' user:' + purchaseData['seller-name'] + ' ' + '@' + new Date().toTimeString()) 
     }); 
    } else { 
     console.log("Detected purchase:" + item['Name'] + item['AssetId'] + ' ' + purchaseData['seller-name']); 
    } 
    }); 
    }; 
    }); 
    setTimeout(function(){ 
    snipebot(page + 1 > max_page ? 1 : page + 1, max_page, max_price); 
    }); 
}); 
}; 
snipebot(1, 4, 50); 
+0

據我所知,您正在對外部網址進行多次調用..無法控制需要多少時間...取決於有問題的網址... – scartag

+2

首先,您需要定義高效對你意味着。本地機器上的高效率可以很快,加載時間快,可以很容易地維護,可以高效地擴展......每種可能的其他定義可能可以一起計算出來,但是會有成爲他們不能共存的領域。 – rfornal

+0

效率高,對我來說是最快的,我可以做到。 –

回答

0

在最壞的情況下,爲了snipebot()呼叫使3往返到後端。您應該檢查您的設計並將一些邏輯移至後端以減少往返次數。

  1. if (item['BestPrice'] <= max_price){ ...
  2. if (purchaseData['expectedPrice'] <= item['BestPrice']){ ...

以上兩個條件可以在後端進行測試,並在那裏進行處理。