首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么axios.get返回的promise没有解析?

为什么axios.get返回的promise没有解析?
EN

Stack Overflow用户
提问于 2021-04-05 03:41:56
回答 1查看 302关注 0票数 0

我的目标是在react应用程序中从MongoDB地图集获取数据。即使在用axios.get()编写了.then和.catch之后,我也得到了一个未解决的承诺。

我的代码:

代码语言:javascript
复制
const entry = axios.get('http://localhost:3001/user')
                .then(res=>{
                    console.log(res.data)
                    return res.data;
                })
                .catch(err=>{console.log("Error: "+err)})
console.log(entry);

上面的代码片段具有以下输出

代码语言:javascript
复制
Promise {<pending>}
(5) [{…}, {…}, {…}, {…}, {…}]

在这里,console.log(res.data)给了我数组,而console.log(entry)给了我一个未决的承诺。

以下是我从MongoDB地图集检索数据时的nodejs代码

代码语言:javascript
复制
const express = require('express');
const Route = express.Router();
const Note = require('../models/note');

Route.get('/', async(req, res)=>{
    await Note.find()
    .then(notes=>res.send(notes))
    .catch(err=>res.send("Error: "+err))
})
module.exports = Route;
EN

回答 1

Stack Overflow用户

发布于 2021-04-05 04:06:35

这是javascript事件循环的一部分。事件循环获得它的名称,因为它同步地等待消息的到达。它实际上是在监控回调队列,所以如果调用堆栈是空的,它将从回调队列中获取第一个事件,并将其推送到调用堆栈,调用堆栈将有效地运行它。

因此,让我们分解您的代码,并尝试了解发生了什么:

代码语言:javascript
复制
const entry = axios.get('http://localhost:3001/user') // 1
            .then(res=>{                              // 2
                console.log(res.data)                 // 3
                return res.data;
            })
            .catch(err=>{console.log("Error: "+err)})
console.log(entry);                                   // 4

  1. // 1正被添加到调用堆栈并执行。
  2. //2正由web api ( JS调用它们的线程)执行。它们是浏览器的一部分,在其中并发执行它的魔术)
  3. 浏览器被设置为侦听来自网络的响应,当它有返回的东西时。它将通过将回调函数插入回调队列来调度要执行的回调函数(事件循环将在回调队列中获取它的下一次访问)。
  4. //4将被添加到调用堆栈并执行。因此,条目未处于rejected/ resolved状态。稍后
  5. 。网络返回响应并将回调推送到回调队列。
  6. 事件循环从回调队列中获取该回调并将其推送到调用堆栈。执行回调并将console.log(res.data)添加到调用Stack.
  7. console.log(res.data)中。

你可以在这里了解更多:

https://blog.sessionstack.com/how-javascript-works-event-loop-and-the-rise-of-async-programming-5-ways-to-better-coding-with-2f077c4438b5

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66945219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档