【发布时间】:2021-08-25 15:55:20
【问题描述】:
我目前正在为 node.js 中的 Twitch-Community 开发一个 web 项目。在呈现页面之前,我正在使用 Twitch API 接收个人资料图片并将它们与其他信息一起添加到对象数组中。不幸的是,当页面呈现时,我只会得到一个关于个人资料图片 URL 的未决承诺。在页面呈现近一毫秒后,我得到了关于 PB-Links 的控制台日志,所以它运行得很快,所以在我看来,ajax 没有意义。在脚本继续渲染页面之前是否有可能等到承诺加载完毕?
提前谢谢你
async function getStreamersPB(streamerName){
var streamer = await twitch.getUsers(streamerName);
var streamerPBURL = await streamer.data[0].profile_image_url;
console.log(streamerPBURL);
}
...
router.get('/', (req, res) => {
var streamer = [];
con.query("SELECT * FROM xxx", function (err, result) {
if (err) {
console.log(err);
}
if (result.length !== 0){
for (let i = 0; i < result.length; i++) {
let streamObj = {
"id": result[i].id,
"name": result[i].name,
"website": result[i].website.toLowerCase(),
"status": result[i].status,
"rang": result[i].rang,
"userPB": getStreamersPB(result[i].name)
}
console.log(streamObj);
streamer.push(streamObj);
}}});
con.query("SELECT * FROM xxx WHERE xxx = '" + xxx + "'", function (err, result) {
if (err) {
console.log(err);
} if(result.length === 1){
res.render('home', {
message: result[0].twitchName,
userID: result[0].id,
streamer: streamer
});
...
这是我的控制台日志:
{
id: 1,
name: 'xxx',
website: 'xxx',
status: 0,
rang: 1,
userPB: Promise { <pending> }
}
https://static-cdn.jtvnw.net/...xxx
【问题讨论】:
-
您需要等待
getStreamersPB。将function (err, result)标记为async,以便您等待 -
嘿@slebetman 我将代码更改为
(async function (err, result) {await getStreamersPB(result[i].name)})现在我正在获取控制台日志userPB: [AsyncFunction: userPB]
标签: javascript node.js express ejs twitch