Promise的意义是什么?

tuna
  • 39

在做微信小程序的时候遇到了请求异步的问题,导致代码冗长而且复用性很低。后来研究了promise但是发现这个东西并不能解决以上问题

之前的小程序代码类似于这样

wx.request{{
    url:'xxx',
    data:{
        data:somthing
    },
    success:function(){
         wx.request{{
            url:'xxx',
            data:{
                data:somthing
            },
            success:function(){
                
            }
}}
    }
}}

然后 promise 代码类似于这样 
    wx.pro.request({
        url:'xxx',
        data:{
            data:somthing
        },
    }).then(function(data){
         wx.pro.request({
            url:'xxx',
            data:{
                data:somthing
            },
        }).then(function(data){
            
        });
    });
回复
阅读 8.3k
4 个回答
toBeTheLight
  • 16.6k
✓ 已被采纳

我说怎么这么别扭 你的.then写错地方了
应该是这样的结构a().then(b).then(c)
你写的是a().then(b.then(c))

建议你读一读 https://github.com/getify/You...

Promise的意义在于规范化回调(永远看做是异步),解决信任危机等。链式调用的流程控制只是“Promise可以组合到一起”所带来的附加益处,而不是主要目的。

流程控制可以使用生成器、async之类的。

PS:
wx.pro.request({

    url:'xxx',
    data:{
        data:somthing
    },
}).then(function(data){
     return wx.pro.request({
        url:'xxx',
        data:{
            data:somthing
        },
    })
}).then(function(data){
        
    });;

当有多个请求之间有相互依赖关系(紧接着的请求需要上一次请求的返回结果),这时promise的作用就凸显出来了。
如果不用promise,常规做法只能callback层层嵌套,俗称callback hell,可读性和维护性都很差的。

宣传栏