javascript – onResourceReceived记录每个资源两次?

前端之家收集整理的这篇文章主要介绍了javascript – onResourceReceived记录每个资源两次?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图用phantomjs来获取有关竞争条件影响页面的可能性的一些指标,我有2个脚本文件,我的站点托管的一些功能取决于由第三方提供的文件设置的全局变量.

我以为在phantomjs中使用onResourceReceived,我可以在每个文件加载时记录,然后运行该测试一次,以了解这个竞争条件会导致问题的频率,我的代码示例如下(这不是实际的代码我不隶属于BBC):

(function (p,wp) {
  "use strict";
  var page,start,count = 0,max = 10,webpage = require('webpage'),url = "http://www.bbc.co.uk";

  function process() {
    if (max == count) {
      console.log('done processing!');
      p.exit();
    } else {
      count++;
      start = new Date();
      page = wp.create();
      page.onResourceReceived = onResourceReceived;
      page.open(url,onOpen);
    }
  }

  function onResourceReceived(response) {
    var match,t = new Date(),url = response.url,status = response.status;
    t = t.valueOf() - start.valueOf();
    if (!!(match = url.match(/locator\.css/))) {
      console.log(match[0] + ': ' + t + 'msecs status: ' + status);
    }
    if (!!(match = url.match(/en-GB\.json/))) {
      console.log(match[0] + ': ' + t + 'msecs status: ' + status);
    }
  };

  function onOpen() {
    console.log('Test ' + count + ' done!!!');
    page.close();
    process();
  }

  process();
}(phantom,require('webpage')));

这个运行我的预期,除了每个文件被记录两次,为什么这样?
有时候时间差异很大.
locator.css:323msecs状态:200
locator.css:323msecs状态:200
en-GB.json:2199msecs状态:200
en-GB.json:2200msecs状态:200
测试1完成!

解决方法

你需要检查response.stage属性.舞台将有开始和结束.开始给出第一个字节到达时间和结束给你当你得到完整的响应.

添加检查您的功能.

function onResourceReceived(response) {
    if(response.stage == 'end') return;
  //rest of your code from above example.

};

猜你在找的JavaScript相关文章