Axios在获得请求解析之后,因此未分配我的变量

时间:2019-02-17 12:23:50

标签: node.js express asynchronous axios

在我的用户控制器上,我想发送一个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,
  });

1 个答案:

答案 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