0

このスクリプトを入手しました:

<script type="text/javascript">
var imones = [];
imones.push('example.com');
imones.push('cnn.com');
imones.push('apple.com');


var beforeloadingtime = (new Date()).getTime();
var beforeTime = [];
beforeTime[0] = beforeloadingtime;
$.each(imones, function (index, value) {
    var jsonnuorodos = "http://anyorigin.com/get?url=" + imones[index] + "&callback=?";
    $.getJSON(jsonnuorodos, function (data) {
        var iframe = $("#output")[0];
        var doc = iframe.document;
        if (iframe.contentDocument) {
            doc = iframe.contentDocument;
        } else if (iframe.contentWindow) {
            doc = iframe.contentWindow.document;
        }
        doc.open();
        doc.writeln(data.contents);
        doc.close();
        var loadingtime = (new Date()).getTime();
        beforeTime.push(loadingtime);

        var result;
        result = (beforeTime[index + 1] - beforeTime[index]) / 1000;
        console.log("result - " + result);
    });
});
</script>

コンソールでは、次の結果が得られます。

result - 1.741 
result - NaN 
result - 0.86 

beforeTime [index + 1]値が常に識別されていないため、2番目の結果でNaNを取得しています。

編集:私が書いた場合、console.log("index= "+[index]); console.log("index+1= "+[index+1]);私は得ています:

index= 0 
index+1= 1 
index= 2
index+1= 3
index= 1
index+1= 2 

あるべき場所:

index= 0 
index+1= 1 
index= 1
index+1= 2
index= 2
index+1= 3
4

2 に答える 2

1

おそらくその理由は、 を使用し$.getJson、 を使用$.eachしてこの関数を作成しているからです。それは非同期です。のindex=3応答速度は よりも速いindex=2ので....

于 2013-03-01T11:45:51.203 に答える
0

単純な for ループを追加して修正しました。

for (i=0;i<4;i++){
var result;
result = (beforeTime[i+1] - beforeTime[i]) / 1000;
}
于 2013-03-01T11:53:58.803 に答える