javascript - 在渲染页面之前等待待处理的 Promise
问题描述
我目前正在为 node.js 中的 Twitch 社区开发一个 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
解决方案
我修好了!我忘了在我的函数中添加一个 return 语句!
非常感谢大家的回答和帮助!!!
推荐阅读
- r - 尝试在 R 中构建人工神经网络,但无法扩展数据集
- php - PHP - 将 $filter 和 $update 数组作为 `MongoDB\Collection::updateMany` 方法中的变量传递
- python - ORA2 自定义 找不到表
- listview - Tlistview Delphi中最后一行的问题
- maven-3 - 如何将 TXT 记录添加到您的 DNS 引用 AWS Route53 上的 Sonatype JIRA 票证?
- python - 具有已定义字节顺序的 Numpy tobytes()
- android - 带有动画更改的自定义进度对话框的大小
- javascript - nodejs中的for循环中的数组值未更新
- flutter - 使用颤振的地图框
- python-3.x - 数据流在运行步骤中挂起 - 没有创建/输出任何元素。与直接跑步者一起使用