【发布时间】:2021-04-27 01:13:40
【问题描述】:
如果有人熟悉并开始使用他们的示例之一,我正在开发 Twitch 扩展程序。我对 JS 很陌生,主要是 C# 背景,所以很多这对我来说有点陌生。基本上我已经设置了一个 hapi 路由,并希望我的节点服务器对不同的服务进行 API 调用,并返回一个字符串,其中包含来自 API 响应的一些数据,然后使用 AJAX 请求将其插入到 iFrame 中。我正在使用的 API 包装器使用异步函数,当我在路由处理程序中调用它们时,请求似乎超时,从我在 chrome 的 devtools 中查看请求时可以看出。不确定 API 调用是否花费了太长时间或类似的东西?这是我正在使用的 API 包装器的链接:https://www.npmjs.com/package/smashgg.js?activeTab=readme
我怀疑我在 async/await 语法中遗漏了一些东西,我还没有完全理解它们是如何工作的。理想情况下,我希望在自己的方法中返回输出字符串的代码,但为简单起见,我只是复制了示例,但我得到了相同的结果。此代码在其自己的文件中运行良好。
这是路由定义:
server.route({
method: 'GET',
path: '/bracket/query',
handler: bracketQueryHandler
});
和路由处理方法:
async function bracketQueryHandler(req){
const payload = verifyAndDecode(req.headers.authorization);
const { channel_id: channelId, opaque_user_id: opaqueUserId } = payload;
const currentBracket = channelBrackets[channelId] || initialBracket;
let tournamentSlug = 'function-1-recursion-regional';
let eventSlug = 'melee-singles';
let meleeAtFunction = await Event.get(tournamentSlug, eventSlug);
let sets = await meleeAtFunction.getSets();
let phaseGroups = await meleeAtFunction.getPhaseGroups();
let setString = "";
for(var i in sets){
setString += "\n" + sets[i].getFullRoundText() + " : " + sets[i].getDisplayScore();
}
console.log(setString);
return setString;
}
【问题讨论】:
标签: javascript node.js async-await hapi