0

我有一個我從哪裏挑選查克諾里斯笑話的網址。基本上,爲了獲得100個笑話,我打了100次URL並將結果存儲在一個數組中,並重復執行。非常直截了當。我在Google Chrome上執行相同的代碼時出現問題。它只是獲取第一個數據的數據,然後不會訪問URL並用第一個數據填充整個數組。我無法得到爲什麼相同的代碼有兩種不同的行爲。請幫忙。它在Firefox中完美工作,但不在谷歌瀏覽器中。 你可以在Fiddle找到代碼。嘗試在Chrome和Firefox上運行相同的代碼,您會發現其中的差異。請幫忙。帶有Promise的Angular代碼適用於Firefox,但不適用於Chrome?

的代碼如下: -

var app=angular.module('JokeApp',[]); 

/** 
* Created by roger on 25/2/14. 
*/ 
app.controller('JokeCtrl',['$scope','$http','$q',function($scope,$http,$q){ 
    $scope.pageTitle="JokeApp"; 
    $scope.data={"jokeList":[]}; 
    $scope.services={}; 
    $scope.processing={}; 
    $scope.processBusy=true; 
    $scope.dataTemplate=function(id,joke,category){ 
     return { 
      "id":id, 
      "joke":joke, 
      "category":category 
     }; 
    }; 

    $scope.getJoke = function(callback) { 
     return $http.get("http://api.icndb.com/jokes/random?limitTo=[nerdy]").success(
      function(data) { 
       return callback($scope.dataTemplate(data.value.id,data.value.joke,data.value.categories[0])); 
      } 
     ); 
    }; 
    $scope.getJokes = function() { 
     var prom = []; 
     for(var i=0;i<10;i++){ 
      prom.push($scope.getJoke(function(value){ 
       $scope.data.jokeList.push(value); 
      })); 
     } 
     $q.all(prom).then(function() { 
      console.log("DONE!!!"); 
      console.log($scope.data.jokeList); 
      $scope.processBusy=false; 
     }); 
    }; 

    $scope.getJokes(); 
}]); 

和HTML是這樣

回答

0

難道是因爲Chrome的高速緩存第一請求的結果,只是重用那些?

如果您在請求URL的末尾添加了一個隨機查詢參數值,該怎麼辦?如果是瀏覽器緩存問題,則在末尾添加&a=<random-number>應防止緩存,因爲每次請求的URL都不相同。

因此,而不是總是要求

$http.get("http://api.icndb.com/jokes/random?limitTo=[nerdy]") 

嘗試

$http.get("http://api.icndb.com/jokes/random?limitTo=[nerdy]&foo=" + Math.random()) 

更新:

它看起來就像是問題,你可以看到它在這裏取不同的笑話: http://jsfiddle.net/V8ztg/

它現在也更慢,因爲它使更多的網絡電話(如你所願)

+0

偉大的人! :)是啊,它的緩慢......但我需要這個.. :) –

+0

有沒有人知道是否有一個內置的角度攔截器來做到這一點?我看到有人在這裏做了他們自己的攔截器:http://stackoverflow.com/questions/16971831/better-way-to-prevent-ie-cache-in-angularjs看到答案由dillip pattnaik – jCuga

+0

你的隨機查克諾里斯笑話fetcher是實際上很酷 - 可能必須爲以後的jsfiddle添加書籤 – jCuga

相關問題