uni.request是异步请求,如何改为同步请求?await?怎么用?
![我爱吃苹果](https://img-cdn-tc.dcloud.net.cn/account/identicon/1a7515445b98947287f03aee816f5e68.png)
- 发布:2018-08-30 11:14
- 更新:2022-09-24 10:19
- 阅读:27028
uni.request是异步请求,如何改为同步请求?await?怎么用?
![折纸鸟](https://img-cdn-tc.dcloud.net.cn/account/identicon/063a05fc71b337d7d57ae05ac40f439a.png)
我就说嘛uni.request在success回调里面的打印的数据老是等uni.request后面的程序后面的程序执行完了后他才打印出来,好坑啊!我是说数据HTTP获取后TM不能用,各种办法都实验完了怎么都是不行!!关键是怎么解决啊!!
![t***@qq.com](https://img-cdn-tc.dcloud.net.cn/account/identicon/6737cbd6430adf62760f0d76aed9b189.png)
https://uniapp.dcloud.io/api/README 里有如下文字:
uni-app 对 API 进行了 Promise 封装,如无 success、fail、complete 参数,将以 Promise 返回数据。
试了uni.request,不对啊!
![1***@qq.com](https://img-cdn-tc.dcloud.net.cn/account/identicon/15427c5220a6627fe4bd75758b0bcf61.png)
// 默认方式
uni.request({
url: 'https://www.example.com/request',
success: (res) => {
console.log(res.data);
}
});
// Promise
uni.request({
url: 'https://www.example.com/request'
})
.then(data => {//data为一个数组,数组第一项为错误信息,第二项为返回数据
var [error, res] = data;
console.log(res.data);
})
// Await
function async request () {
var [error, res] = await uni.request({
url: 'https://www.example.com/request'
});
console.log(res.data);
}
javatong
这种封装谁都会,现在问题是有那种必须双同步的,比如获取token,getToken方法会检验过期,过期的话刷新token,此时需要同步,getToken也需要同步,你这样用await,ajax请求是同步了,getToken方法变异步了
2019-09-10 18:15