我试图显示从节点js中的发布路由中进行api调用后收到的json数据。但是看起来控制台在从API分配数据之前正在打印变量,我认为javascript执行正在进行而无需等待api请求完成,并且未定义response.body打印,我正在使用unirest模块。 我是js编程语言的新手,并试图学习和理解诸如回叫,promise等功能。您的建议和指导将对我有所帮助。谢谢
routes / team.js
const express = require('express');
const router = express.Router();
const path = require('path');
const request = require('request');
const unirest = require('unirest')
const { check, validationResult } = require('express-validator/check');
const XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
const data = require('../data/data.json')
router.post('/create', function(req, res){
const url = "< api url >"
unirest.get(url)
.headers({'Accept': 'application/json', 'Authorization': 'Basic ***', sendImmediately: true })
.send({ 'team': 'teamname' })
.end(function (response) {
console.log(response.body);
});
res.send("Created");
});
终端上的响应是
[nodemon] restarting due to changes...
[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
Server started on port 3001...
undefined
应用程序的入口文件 app.js
const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const flash = require('connect-flash')
const session = require('express-session')
var methodOverride = require('method-override');
// Init App
const app = express();
// set public folder
app.use(express.static(path.join(__dirname, 'public')));
app.listen(3001, function(){
console.log('Server started on port 3001...');
});
// Route Files
let team_route = require('./routes/team')
app.use('/team', team_route)