小程序的wx.request
方法的不支持 Promise,也就是说我们不能使用promise函数来使我们的请求与回调函数同步, 这就带来了一些问题,比如我们在wx.request请求的success回调函数中写:
success(res){
this.setData({
a: res.data.a,
b: res.data.b,
c: res.data.c
})
}
如果网络状态或服务器状态不是太好的话,就可能会报错“设值invalid”,这就是因为我们还没有接受到服务器的返回信息,但是回调函数已经开始执行了,如何让它们强行同步呢?
wx-promise-request 是微信小程序 wx.request
方法的不支持 Promise 和并发数问题的解决方案。
使用它也很简单:
https://github.com/zhengjunxin/wx-promise-request
去这里下载dist目录下的index.js, 重命名为wx-promise-request.js并粘贴到项目的utils目录下, 在需要使用同步request请求的js文件里添加代码
import { request } from '../../utils/wx-promise-request';
即可,如何使用? 例子如下:
import {request} from './wx-promise-request';
request({
url: 'test.php',
data: {
x: '',
y: '',
},
header: {
'content-type': 'application/json',
},
})
.then(res => console.log(res))
.catch(error => console.error(error))