Node.js 如何在expressjs中使用axios result进行res.render?

Node.js 如何在expressjs中使用axios result进行res.render?,node.js,express,axios,Node.js,Express,Axios,我不知道如何使用expressjs中“res.render”中的axios response.data,我尝试创建一个数组,并将axios结果传输到一个新数组(myWorkspace),然后全局使用数组,但数组为空 app.get('/fullscreen',passport.isAuthenticated,passport.isAuthenticated('user'),(req,res)=>{ var myWorkspace=[]; axios .get('http://localhost:

我不知道如何使用expressjs中“res.render”中的axios response.data,我尝试创建一个数组,并将axios结果传输到一个新数组(myWorkspace),然后全局使用数组,但数组为空

app.get('/fullscreen',passport.isAuthenticated,passport.isAuthenticated('user'),(req,res)=>{
var myWorkspace=[];
axios
.get('http://localhost:8080/geoserver/rest/workspaces', {
认证:{
用户名:“admin”,
密码:'@dmin9901',
},
标题:{
接受:'application/json',
“内容类型”:“应用程序/json”,
},
})
.然后(功能(响应){
myWorkspace.push(response.data['workspace']);
返回我的工作空间;
})
.catch(函数(错误){
//处理错误
console.log(错误);
})
.然后(函数(){
//总是执行
});
res.render('全屏'{
工作空间:JSON.stringify(myWorkspace),
});
});

axios.get
异步执行。这意味着
res.render
方法可能会在从API获得响应之前执行。这就是为什么你有一个空数组

更改为:

axios.get(…).then(函数(响应){
myWorkspace.push(response.data[“workspace]”);
res.render('全屏'{
工作空间:JSON.stringfy(myWorkspace)
})
})
请参阅下面的演示:

//模拟axios.get进行HTTP调用
函数get(){
返回新承诺((解决)=>
设置超时(()=>{
解决([1,2,3]);
}, 1000),
);
}
(功能控制器(){
var myWorkspace=[];
get()。然后((res)=>{
myWorkspace=res;
log('get response:',myWorkspace);
});
//res.render将首先打印
console.log('res.render:',myWorkspace);
})();
执行结果:

res.render:[]
获取响应:[1,2,3]

地理服务器/rest/工作区是否在同一台服务器上?