跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Promise(axios)的问题请教
未分類
15 6 月 2020

Promise(axios)的问题请教

Promise(axios)的问题请教

資深大佬 : miv 8

如题,遇到一个棘手的问题,基础不扎实的我来请教一下。

是这样的需要实现一个功能伪代码如下

if(情况 A ){  axios 请求接口 A.then(res=>){      if(xxx){          return //这里的 return 无法结束下面情况 B 和情况 C,还是会继续执行,因为这里是异步         }     } }  if(情况 B ){  ... }else if(情况 C ){  ... } 

现在的问题是,axios 请求接口 A 的数据只可以使用 then 异步获取结果。 如果条件不满足就不执行后面其他情况(情况 B 和情况 C )的代码了。 可是由于情况 A 是异步的,所以不管怎么样情况 B 和 C 都会执行,我不需要这一种情况,需要怎么处理呢?

大佬有話說 (10)

  • 資深大佬 : BearD01001

    不用 async 的情况下可以在 then 中 throw 一个 error 然后用 catch 实现

  • 資深大佬 : FEDT

    把 情况 B 和情况 C 放到 then 的回调函数里不就可以了么…

  • 主 資深大佬 : miv

    @BearD01001 好的,太感谢了,我尝试下。

  • 主 資深大佬 : miv

    @FEDT 是这样的,改动成本有点大,因为满足情况 A 才执行对应的代码。这样的话就会多一份代码在回调函数里面了,有点冗余

  • 資深大佬 : otakustay

    如果 if 里的条件是 A 接口返回才知道的,那么除了把 B 和 C 放进 A 的 then 里以外没有任何办法
    代码改造成 await 的话改起来没什么成本,反正外部调用肯定是认定返回值是 Promise 吧

  • 資深大佬 : Exin

    1. 推荐 async/await

    “`js
    if (A) {
    const res = await requestA(…)
    if (xxx) return
    }

    if (B) …
    else if (C) …
    “`

    2. Promise.resolve

    “`js
    Promise.resolve(A ? requestA(…).then(res => xxx ? true : false) : false)
    .then(escapedFromA => {
    if (!escapedFromA) {
    if (B) …
    else if (C) …
    }
    })
    “`

  • 資深大佬 : Exin

    v2 回复是不是不支持 markdown ?

  • 主 資深大佬 : miv

    @otakustay 多谢老哥

    @Exin 多谢老哥
    我尝试下

  • 資深大佬 : godgc

    @Exin v2 应该是要“`javascript 吧

    e.g

    “`javascript
    let foo = ‘bar’;
    “`

  • 資深大佬 : godgc

    @Exin 惨..也不行

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具