const express = require('express');
const router = express.Router();
const axios = require('axios');
/* GET home page. */
router.get('/', (req, res, next)=> {
let instaPost;
getLatest(callback => {
instaPost = callback;
console.log(instaPost);
});
res.render('index', {
title: 'Home',
insta: instaPost
});
});
function getLatest(callback) {
axios.get('https://api.instagram.com/v1/users/self/media/recent/?access_token=xxx&count=1')
.then(response => {
callback((response.data.data[0].link));
})
.catch(error => {
callback(error);
});
}
module.exports = router;
console.log(instaPost);成功返回了我想要的网址,但是,当我尝试将其发送到res.render内部的页面时,没有任何反应,请有人可以帮助我了解原因。
答案 0 :(得分:0)
在res.render(...)
回调函数中调用getLatest()
。
鉴于当前代码,在设置res.render()
属性之前执行insta
。
答案 1 :(得分:0)
Axios
与promise一起使用,所以最方便的事情是保持这种形式的工作,GET
方法是异步的,可以通过以下方式获得所需的值。
const express = require('express');
const router = express.Router();
const axios = require('axios');
/* GET home page. */
router.get('/', (req, res, next) => {
getLatest().then((instaPost) => {
res.render('index', {
title: 'Home',
insta: instaPost
});
});
});
function getLatest() {
return axios.get('https://api.instagram.com/v1/users/self/media/recent/?access_token=xxx&count=1')
.then(response => {
return Promise.resolve(response.data.data[0].link);
})
.catch(error => {
return Promise.reject(error);
});
}
module.exports = router;
如果您不知道承诺的运作方式,请留下此链接,以便您可以 阅读和理解。 Promises。