Я работаю над расширением Twitch, если кто-нибудь знаком и начал работать над одним из их примеров. Я довольно новичок в JS, в основном с фоном C #, поэтому многое из этого мне чуждо. По сути, я настроил маршрут хапи и хочу, чтобы мой сервер узлов выполнял вызов API для другой службы и возвращал строку, содержащую некоторые данные из ответа API, которые затем вставляются в iFrame с помощью запроса AJAX. Оболочка API, которую я использую, использует асинхронные функции, и когда я вызываю их в обработчике маршрутов, кажется, что запросы истекают из того, что я могу сказать, посмотрев запрос в devtools chrome. Не уверен, что вызовы 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;
}