【发布时间】:2021-03-31 20:07:38
【问题描述】:
我正在尝试获取 body.totalPages 值,以便可以在另一个功能块中使用它。它成功地 console.logs 它但是当我尝试在 getTotalGoals 函数中使用它时返回的值是未定义的。
function delay() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(42);
}, 3000);
});
}
async function getPages(endpoint, teamParam) {
var body = ''
var results = await https.get((endpoint+teamParam), res => {
res.setEncoding('utf8');
res.on("data", data => {
body += data;
});
res.on("end", () => {
body = JSON.parse(body);
return body;
});
});
await delay();
console.log(body.totalPages);
return body.totalPages;
}
async function getTotalGoals(team, year) {
// endpoint config
let endpoint = `https://jsonmock.hackerrank.com/api/football_matches?year=${year}`;
let homeParams = `&team1=${team}`;
let awayParams = `&team2=${team}`;
let homePages = 0;
let awayPages = 0;
let totalWins = 0;
homePages = await getPages(endpoint, homeParams); // undefined here
awayPages = await getPages(endpoint, awayParams);
totalWins += await getWins(endpoint+homeParams, homePages);
totalWins += await getWins(endpoint+awayParams, awayPages);
console.log(totalWins);
}
【问题讨论】:
-
如果你将回调函数传递给
https.get,那么它可能不是一个promise,如果你想使用async/await,它是必需的
标签: javascript node.js https async-await request