在做微信小程序的时候遇到了请求异步的问题,导致代码冗长而且复用性很低。后来研究了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){
});
});
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我说怎么这么别扭 你的.then写错地方了
应该是这样的结构
a().then(b).then(c)你写的是
a().then(b.then(c))建议你读一读 https://github.com/getify/You...
Promise的意义在于规范化回调(永远看做是异步),解决信任危机等。链式调用的流程控制只是“Promise可以组合到一起”所带来的附加益处,而不是主要目的。
流程控制可以使用生成器、async之类的。
PS:
wx.pro.request({
当有多个请求之间有相互依赖关系(紧接着的请求需要上一次请求的返回结果),这时promise的作用就凸显出来了。
如果不用promise,常规做法只能callback层层嵌套,俗称callback hell,可读性和维护性都很差的。