브라우저 성능의 결과를 얻으려면 browser-perf를 사용하고 있습니다.약속에서 반환되는 데이터를 검색하는 방법은 무엇입니까?
나는 다음과 같은 코드가 있습니다 :
var browserPerf = require('browser-perf');
var _ = require('lodash');
var fs = require('fs');
var colors = require('colors');
var couchbase = require('couchbase');
const Promise = require('bluebird');
var performanceMetricsDriver = {
recordPerfMetrics: function(url) {
var self = this;
var perf, loadTime, domInteractive, firstPaint;
var perfData = {};
fs.readFile('urls.txt', 'UTF-8', function (err,urls) {
if (err) {
return console.log(err);
}
var urls = urls.split("\n");
urls.shift();
urls.forEach(function(url) {
console.log(url);
self.getStats(url);
});
// console.log(colors.magenta("Starting to record performance metrics for " + url));
// this.storePerfMetrics();
});
},
getData: function(url) {
return new Promise(function (resolve, reject) {
console.log("NOW GETTING DATA FOR URL: " + url);
// if (err) {
// Promise.reject("This erred out!!");
// } else {
// Promise.resolve(data);
// console.log(data);
// loadTime = (data.loadEventEnd - data.navigationStart)/1000 + ' sec';
// firstPaint = data.firstPaint;
// domInteractive = (data.domInteractive - data.navigationStart)/1000 + ' sec';
// perfData = {
// 'URL' : url,
// 'firstPaint' : firstPaint,
// 'loadTime' : loadTime,
// 'domInteractive' : domInteractive
// };
// }
}).then(function(data, err) {
});
},
getStats: function(url) {
var self = this;
browserPerf(url, self.getData(url), {
selenium: 'http://localhost:4444/wd/hub',
browsers: ['chrome']
});
}
}
내가 브라우저 퍼포 레이션에 의해 반환되는 데이터를 캡처하려고하지만 어떤 이유로이 밖으로 실수를 범에 유지하고 나에게 처리되지 않은 거부 오류를 제공
당신은'.then()'핸들러를 promise에 적용하고'.then()'핸들러 내부에 데이터를 사용한다. 이것이 비동기 결과가 작동하는 방식입니다. 가능한 복제본 : [비동기 호출에서 응답을 반환하는 방법] (http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call). – jfriend00
@ jfriend00 : 나는 그 일을 시도했는데, 그게 위의 경우에 어디에서 처리 될지 너무 확신하지 못했습니다. – pj013