如何使这段代码高效?

时间:2015-04-18 22:10:30

标签: javascript json each

首先,抱歉它不是那么整洁,我还在学习javascript的绳索。

我在谷歌Chrome控制台中运行此代码,但运行它需要太多时间,我正在做什么,我可以修复以使其运行得更快?

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

1 个答案:

答案 0 :(得分:0)

在最糟糕的情况下,拨打snipebot()会使后端往返3次。您应该检查您的设计并将一些逻辑移到后端以减少往返次数。

  1. if (item['BestPrice'] <= max_price){ ...
  2. if (purchaseData['expectedPrice'] <= item['BestPrice']){ ...
  3. 上述两个条件都可以在后端测试并在那里进行处理。