测量API调用所用的时间

时间:2017-06-02 11:49:53

标签: angularjs node.js

我想花时间进行API调用。

我有一个带有angularJS前端的web应用程序和具有端到端连接的nodejs后端。

后端路由

//cargo-service.js
module.exports = function(key){
    return new asyncTimedCargo(function(tasks, callback) {
        var length = tasks.length;
        var postBody = [];
        for(var i=0;i<length;i++){
            var message ={};
            var task = JSON.parse(tasks[i].value);
            message = task;
            postBody.push(message);
        }
        var postJson = {
            "json": {"request":postBody}
        };
        sms_queue.push(postJson);
        callback();
    }, batch_config.batch_size, batch_config.batch_timeout)
};

//kafka-consumer.js
cargo = cargo-service()
consumer.on('message', function (message) {
    if(message && message.value && utils.isValidJsonString(message.value)) {
        var msgObject = JSON.parse(message.value);        
        cargo.push(message);
    }
    else {
        logger.error('Invalid JSON Message');
    }
});

// sms-queue.js
var sms_queue = queue(
retryable({
    times: queue_config.num_retries,
    errorFilter: function (err) {
        logger.info("inside retry");
        console.log(err);
        if (err) {
            return true;
        }
        else {
            return false;
        }
    }
}, function (task, callback) {
// your worker task for queue
  callback()
}), queue_config.queue_worker_threads);

sms_queue.saturated = function() {
    consumer.pause();
    logger.warn('Queue saturated Consumption paused: ' + sms_queue.running());
};
sms_queue.unsaturated = function() {
    consumer.resume();
    logger.info('Queue unsaturated Consumption resumed: ' + sms_queue.running());
};
呼叫api的前端服务

app.get('/api/eventUploadRead', function(req, res) {
         filesReadUploads.find(function(err, events) {                
              if (err)
                  res.send(err);
              res.json(events);
          });
      });

控制器

getUploadRead : function() {
        return $http.get('/api/eventUploadRead');
    },

我想要做的就是花费时间,直到数据从API call.t传递给控制器 这样做的原因是,我希望随着数据负载的减少来测量时间变化。我希望减少数据负载并测量相应加载所需的时间。

任何人都可以帮助我吗?如果不清楚请告诉我。

由于

4 个答案:

答案 0 :(得分:1)

您可以在服务电话前后启动计时器,以计算所需的时间。

  var start = new Date().getTime();
    getEventsOfUploadedFile();
     $scope.events;
        function getEventsOfUploadedFile()
        {
            Event.getUploadRead()
            .success(function(event){
              var end = new Date().getTime(); 
            $scope.events=event;
            })
                .error(function (error) {
                    $scope.status = 'Unable to load event data: ';
            });
        }
    total_time = end - start;

您还可以使用chrome开发人员工具分析服务电话的时间。

答案 1 :(得分:1)

作为@Vivz的上述替代方案,我使用console.time函数来测量持续时间(ms)。

/* start time ‘test’ */
console.time('test');

/* stop time ‘test’ */
console.timeEnd('test');

/* stop time output ms */
test: 8254.471ms

答案 2 :(得分:1)

您可以使用console.time() / console.timeEnd()为请求计时:

function getEventsOfUploadedFile() {
  console.time('getUploadRead');
  Event.getUploadRead()
    .success(function(event) {
      $scope.events = event;
    })
    .error(function(error) {
      $scope.status = "Unable to load event data: ";
    })
    .finally(function() {
      console.timeEnd('getUploadRead');
    });
}

答案 3 :(得分:1)

您还可以使用performance.now()。这个link在console.time和performance.now。

之间进行了一些比较