在做微信小程序的时候遇到了请求异步的问题,导致代码冗长而且复用性很低。后来研究了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){ }); });
当有多个请求之间有相互依赖关系(紧接着的请求需要上一次请求的返回结果),这时promise的作用就凸显出来了。
如果不用promise,常规做法只能callback层层嵌套,俗称callback hell,可读性和维护性都很差的。
建议你读一读 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){ });;
我说怎么这么别扭 你的.then写错地方了
应该是这样的结构a().then(b).then(c)
你写的是a().then(b.then(c))