vue中Promise { pending }是什么?为何会出现这种状态,怎么解决这种问题?
首先你需要知道 promise 要用then接收或者async await
例如:a() 是一个Promise封装的方法
// 定义一个变量直接a() 赋值给 b
let b = this.a()
console.log(b) //这里就会返回 Promise {<pending>}
第一种方式 then 接收 ,也就是收把所需数据在then中得到,后续逻辑也只能在then中实现
let b = this.a()
.then(res =>{
//.then是接收正确返回的信息
console.log(res) // {...}
})
.catch(err =>{
// .catch 返回报错信息
console.log(err)
})
第二种方式 async await接收:
async c(){
let b = await this.a()
console.log(b) // 现在就是正确返回了 {...}
}
这里要注意的是 async 和 await 必须是一起的
这里说下为什么会这样???
Promise是异步执行的, 什么叫异步呢, 就是你以为代码是一行执行完才执行下一行吗? 不是的, 你promise还没执行then的时候,就开始执行下一行了,导致获取的数据出现pending状态
比如以下用法是有问题的:
let table_id = getTableIdByColumnId(that,id).then(res => {
return res.data.table_id
});
goToTableDetail(that,table_id);
then还没有return时候,已经开始执行goToTableDetail(that,table_id);,导致table_id 为object 出现pending情况。
正确用法:
getTableIdByColumnId(that,id).then(res => {
console.info(res);
goToTableDetail(that,res.data.table_id);
});
作者:少帅
出处:少帅的博客--http://www.cnblogs.com/wang3680
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但请保留该声明。
![](https://images.cnblogs.com/cnblogs_com/wang3680/1880988/o_201113031241%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20201113111211.jpg)
![](https://images.cnblogs.com/cnblogs_com/wang3680/1881010/o_201113034037%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20201113113928.png)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 用 C# 插值字符串处理器写一个 sscanf
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!