有这个脚本:
<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
我的第二个结果是NaN,因为beforeTime [index + 1]值总是无法识别。
编辑:
如果我写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
答案 0 :(得分:1)
可能原因是您使用$.getJson
并使用$.each
来创建此功能。那是非同步的。 index=3
的响应速度比index=2
快,所以....
答案 1 :(得分:0)
通过添加一个简单的for循环来修复它:
for (i=0;i<4;i++){
var result;
result = (beforeTime[i+1] - beforeTime[i]) / 1000;
}