在我的用户控制器上,我想发送一个get请求以接收json响应。
当响应到来时,我想将值分配给一个称为embed的变量,但是呈现部分:
.avatar {
border: 2px solid #EAECEE;
-webkit-box-shadow: 1px 1px 4px 0 rgba(0, 0, 0, 0.75) inset;
-moz-box-shadow: 1px 1px 4px 0 rgba(0, 0, 0, 0.75) inset;
box-shadow: 1px 1px 4px 0 rgba(0, 0, 0, 0.75) inset;
}
.avatar img {
position: relative;
width: 35px;
height: 35px;
z-index: -1;
}
发生在轴功能完成之前……给我留下了一个空对象。
我要做什么才能等待响应...然后呈现模板?
请注意,在此代码中,控制台日志2发生在控制台日志1之前:
res.render('user', {
user,
title: user.name,
embed: embed.html,
});
答案 0 :(得分:1)
请求是异步的。您需要再添加一个#version 410
out vec4 FragColor;
in vec3 ourColor;
in vec2 TexCoord;
uniform sampler2D ourTexture;
void main()
{
FragColor = texture(ourTexture, TexCoord);
}
await
我也建议不要将exports.getUserBySlug = async (req, res, next) => {
const user = await User.findOne({ slug: req.params.slug })
let embed = {}
if (!user) return next();
await axios.get(`https://soundcloud.com/oembed?format=json&url=${user.musicLink}`)
.then(response => {
embed = response.data
console.log('1: ', embed)
})
.catch(error => {
console.log(error);
})
console.log('2: ', embed)
res.render('user', {
user,
title: user.name,
embed: embed.html,
});
};
与async/await
通话混用。
.then