为啥我得到 Promise 待处理而不是 Express 响应? [复制]
Posted
技术标签:
【中文标题】为啥我得到 Promise 待处理而不是 Express 响应? [复制]【英文标题】:Why do I got Promise pending instead of Express response? [duplicate]为什么我得到 Promise 待处理而不是 Express 响应? [复制] 【发布时间】:2021-01-17 01:11:51 【问题描述】:我的代码,我是 Express 的新手。
app.get('/', (req, res) =>
const name = req.query.name;
const rank = req.query.rank;
const headers = Object.entries(req.headers)
.map(([key, value]) => `$key: $value`);
res.json( success: true, data : name, rank , headers : headers );
);
server = app.listen(3000);
const res = axios.get('http://localhost:3000?name=John Malone&rank=Captain');
console.log(res);
终端输出
Promise <pending>
我改变了我的代码,数据输出
data:
success: true,
data: name: 'John Malone', rank: 'Captain' ,
headers: [
'accept: application/json, text/plain, */*',
'user-agent: axios/0.20.0',
'host: localhost:3000',
'connection: close'
]
axios.get('http://localhost:3000?name=John Malone&rank=Captain')
.then(function(data)
console.log(data.data.name); // Data response from server
);
显示未定义。
【问题讨论】:
因为axios.get()
返回了一个承诺。所以,当你console.log()
它是返回值时,这就是你得到的——一个承诺。使用 .then()
或 await
从该承诺中获取已解决的值。
因为 axios.get 返回一个承诺。
【参考方案1】:
这里有两个部分:
服务器部分是节点写的(快递)你做对了 客户端部分是由 axios 请求的你得到 Promise 因为axios.get
返回一个Promise
(一个异步请求)。所以在那种情况下,我猜你想将数据记录到控制台。你应该这样做:
axios.get('http://localhost:3000?name=John Malone&rank=Captain')
.then(function(data)
console.log(data); // Data response from server
);
【讨论】:
如何从输出中获取名称和排名? 嗯,这取决于你的数据,console.log(data)
的结果是什么?以上是关于为啥我得到 Promise 待处理而不是 Express 响应? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我要使用 Redux Promise Middleware 而不是 Redux Promise?