gpt4 book ai didi

javascript - API 返回数据,但在 undefined object 中。这是怎么回事?

转载 作者:行者123 更新时间:2023-11-30 11:22:14 26 4
gpt4 key购买 nike

我正在使用 httpsasync 同时进行两个调用。作为返回,我得到两个对象,然后我将它们放入一个数组中。这就是我打电话的方式:

if (req.user.isPremium == false) {
// Free user - Single report
let website = req.body.website0;
let builtWithCall = `https://api.builtwith.com/free1/api.json?KEY=key&LOOKUP=${website}`;
let pagespeedCall = `https://www.googleapis.com/pagespeedonline/v4/runPagespeed?url=https://${website}&strategy=mobile&key=key`;
// curl 'https://www.googleapis.com/pagespeedonline/v4/runPagespeed?url=https://georgiancollege.ca&strategy=mobile&key=AIzaSyDqOAEXV6WrNioBeOA76GOWzDSX2FvS--0'
var calls = [];
calls.push(function(callback) {
// first call
var results;
https.get(builtWithCall, function(resource) {
resource.setEncoding('utf8');
resource.on('data', function(data) {
results += data;
// console.log(data);
});
resource.on('end', function() {
callback(null, results);
});
resource.on('error', function(err) {
callback(err);
});
});
});
calls.push(function(callback) {
// second call
var results;
https.get(pagespeedCall, function(resource) {
resource.setEncoding('utf8');
resource.on('data', function(data) {
results += data;
});
resource.on('end', function() {
// var j = JSON.parse(results);
// console.log(j.kind);
callback(null, results);
});
resource.on('error', function(err) {
callback(err);
});
});
});
} else {
// Premium user - comparison report
let websites = [];
}
async.parallel(calls, function(err, results) {
if (err) {
console.log(err);
}
// console.log('async callback ', results);
res.render('reports/report', {
title: 'Report',
data: results.filter(x => x != null),
user: req.user,
});
});

网站变量来自 View 。

现在。当我在 View 中打印出来时,我得到了这个: enter image description here

这一切都很酷,但我需要获取属性,以生成用户友好的报告。我尝试将其解析 为 JSON,但它只是抛出“意外值 undefined 0”...这意味着异步调用将其返回为未定义。

我该如何解决这个问题?

最佳答案

好吧,你似乎在做一些奇怪的事情:你定义了一个 results var,即 undefined , 然后你做 results += data .这导致 results成为undefined {<whichever-data-is>} .这就是为什么您在页面中有“未定义”的原因。不要使用 += , 只需使用 = , 或初始化 results : var results = '' ;

通过分配或附加 data,我不完全明白您要做什么到另一个变量而不是仅仅返回它,但是,因为结果只在它定义的函数中分配一次。

关于javascript - API 返回数据,但在 undefined object 中。这是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49390058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com