t***@163.com
t***@163.com
  • 发布:2019-02-13 23:07
  • 更新:2019-10-18 16:11
  • 阅读:12261

async+await在uniapp里无法实现异步问题同步化怎么办?请赐教!

分类:uni-app
async txbrequest(url,dataobj) {  
			await uni.request({  
					url: url, //仅为示例,并非真实接口地址。  
					data: dataobj,  
					success: function(res) {  
						return res.data  
					}  
				})  
			}

先定义了一个异步同步化的获取数据方法
在created里

var _this = this; //txb非常关键,保证指向正确	  
				var url = _this.weburl + "index.php?m=txbmobileapp&f=index&v=get_block";  
				let txbdata =_this.txbrequest(url, {});

可是获取不到txbdata,还是异步的,我这写法有啥问题吗?

2019-02-13 23:07 负责人:无 分享
已邀请:
t***@163.com

t***@163.com (作者) - 80后

async txb_ajax_request(url, obj) {  
				//返回一个promise实例。  
				return await new Promise((resolve, reject) => {  
					uni.request({  
						url: url,  
						data: obj,  
						success: (result) => {  
  
							resolve(result.data);  
						},  
						fail: (e) => {  
							reject(e);  
						}  
					})  
				})  
			}

正确的姿势是这样,结题

t***@163.com

t***@163.com (作者) - 80后

顶一下!!!

关中大侠

关中大侠

你这个写法不对, await 后面跟的是 promise的函数,而不是回调函数,你需要把request包装一下

  • t***@163.com (作者)

    好的谢谢,我明白了


    2019-02-14 09:59

t***@163.com

t***@163.com (作者) - 80后

_this.txb_ajax_request(url, {}).then((txbdata) => {  
					for (let i = 0; i < txbdata.length; i++) {  
						//模板要求标题对象格式一个是name,一个是id  
						//例如:tabBars=[{name:'田希彬',id:'txb'}]  
						//因为返回的数组对象是键名是cid,需要把键名改成id,才能使滑动列表让标题跟随滑动  
						txbdata[i].id = txbdata[i].cid;  
						_this.tabBars.push(txbdata[i]); //属性  
					}  
}

外部调用

  • 你好,方便教我一下,我不太懂这个代码。


    2019-11-15 17:17

9***@qq.com

9***@qq.com - 专业开发直销分销类软件

完蛋啊,我完全看不明白 , 我是废了么

showker

showker

不错不错

2***@qq.com

2***@qq.com

你好,方便留一个联系方式吗,我是初学者不太明白您写的代码

该问题目前已经被锁定, 无法添加新回复