Я использую браузер-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()' к обещанию, и вы используете данные INSIDE обработчиком '.then()'. Вот как работают результаты async. Возможный дубликат: [Как вернуть ответ от асинхронного вызова] (http://stackoverflow.com/questions/14220321/how-do-return-the-response-from-an-asynchronous-call). – jfriend00
@ jfriend00: Я пытался сделать это, просто не слишком уверен, где это будет обрабатываться в вышеупомянутом случае. – pj013