为了账号安全,请及时绑定邮箱和手机立即绑定

VUE大家能讲讲为什么这个axios的为什么外面又套了一个promise?

VUE大家能讲讲为什么这个axios的为什么外面又套了一个promise?

慕尼黑的夜晚无繁华 2019-01-04 16:34:36
axios返回的response.data可以拿来用了 但是为什么外面又套了一层promise?用的时候还要这样去写这样不是更麻烦了吗??昨天遇到的这个问题 刚才看到一个人提问了差不多的问题 但是那个人没有贴代码 我贴上代码大家能解释一下为什么要这样做吗?谢谢get().then(data => {   console.log(data) })export function get (url, data = {}) {  return new Promise((resolve, reject) => {     axios.get(url, {params: data})       .then(response => {         resolve(response.data)       }, err => {         reject(err)       })   }) }
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

包一层Promise多此一举 完全没必要

export function get (url, data = {}) {  return axios.get(url, {params: data}).then((res)=>res.data)
}

Promise.prototype.then

  • 如果then中的回调函数返回一个值,那么then返回的Promise将会成为接受状态,并且将返回的值作为接受状态的回调函数的参数值。

  • 如果then中的回调函数抛出一个错误,那么then返回的Promise将会成为拒绝状态,并且将抛出的错误作为拒绝状态的回调函数的参数值。

  • 如果then中的回调函数返回一个已经是接受状态的Promise,那么then返回的Promise也会成为接受状态,并且将那个Promise的接受状态的回调函数的参数值作为该被返回的Promise的接受状态回调函数的参数值。

  • 如果then中的回调函数返回一个已经是拒绝状态的Promise,那么then返回的Promise也会成为拒绝状态,并且将那个Promise的拒绝状态的回调函数的参数值作为该被返回的Promise的拒绝状态回调函数的参数值。

  • 如果then中的回调函数返回一个未定状态(pending)的Promise,那么then返回Promise的状态也是未定的,并且它的终态与那个Promise的终态相同;同时,它变为终态时调用的回调函数参数与那个Promise变为终态时的回调函数的参数是相同的。


查看完整回答
反对 回复 2019-01-04
  • 1 回答
  • 0 关注
  • 808 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信