美文网首页
如何解决异步深度嵌套的困扰

如何解决异步深度嵌套的困扰

作者: 默成S | 来源:发表于2018-01-06 09:02 被阅读0次

    js编程最困难的就是异步深度嵌套。比如我们在业务处理时有这样的需求:
    你有用户名变量和值,依据用户名去获取用户信息,再依据用户信息里的id去获取该id对应的所有文章。
    这种一环套一环的业务模式太常见的。

    axios.get('/api/user?name=xugaoyang')
      .then(function (response) {
        let userInfo = response.data;
        
        axios.get('api/topics?user_id=' + userInfo._id)
          .then(function (response) {
            let topics = response.data;
    
            // i got it.
          })
          .catch(function (err) {
            console.log(err);
          });
      })
      .catch(function (err) {
        console.log(err);
      });
    

    很多人改进此类问题时,只是简单的把内部嵌套调用封装成函数

    function getTopics(id) {
      axios.get('api/topics?user_id=' + id)
      .then(function (response) {
        let topics = response.data;
    
        // i got it.
      })
      .catch(function (err) {
        console.log(err);
      });
    }
    
    axios.get('/api/user?name=xugaoyang')
      .then(function (response) {
        let userInfo = response.data;
        
        getTopics(userInfo.id)
      })
      .catch(function (err) {
        console.log(err);
      });
    

    以上只是代码结构上的调整,但没有解决深度嵌套的核心问题。
    你有好的建议吗?


    Promises 入门 - 从菜鸡到吃鸡:https://github.com/Dream4ever/JavaScript/blob/master/topics/promises.md
    这是一篇很好的文章,详细的解释了“承诺”的使用方法。

    相关文章

      网友评论

          本文标题:如何解决异步深度嵌套的困扰

          本文链接:https://www.haomeiwen.com/subject/wugenxtx.html