失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 微信小程序设置请求超时wx.request等 简单易懂!

微信小程序设置请求超时wx.request等 简单易懂!

时间:2021-08-25 07:07:12

相关推荐

微信小程序设置请求超时wx.request等 简单易懂!

微信小程序设置请求超时wx.request等

一、用到的方法:

个人理解,比较粗糙 看不懂可以百度一下具体用法

new Promise:new了一个函数或者方法,可以被Promise.race等方法调用

resolve:返回本方法成功要返回的数据 相当于success return

reject:返回本方法失败要返回的数据 相当于fail return 具体用法下面有

Promise.race:Promise.race([a,b]); race是Promise的一个方法可以调用 意为竞速,a和b是两个new的Promise方法,这个数组中可以存多个Promise方法,执行之后a和b会同时执行 哪个先执行完就运行哪个 另一个就停止运行

以上都为Promise相关

setTimeout:设置超时 如果设置5秒 执行开始 等待(延迟)5秒后再执行其中的方法

就相当于a封装了一个request请求,b为5秒超时时间,如果a在5秒内未完成b就会执行 同时a会停止

二、具体实现

先来两个简单的 先试试 可以执行 看不懂可以看下面有具体解释过的

stop:function(){let a = new Promise((resolve,reject) => {if (true == false) {setTimeout(resolve,3000,'成功')}else{setTimeout(resolve,1000,'失败')}});let b = new Promise((resolve,reject)=>{setTimeout(reject,2000,'页面丢失了,请重新进入')})Promise.race([a,b]).then(success=>{console.log(success);//返回第二个resolve '失败'},err=>{console.log(err);})}

let p1 = new Promise((resolve, reject) => {setTimeout(resolve, 1000, 'one');});let p2 = new Promise((resolve, reject) => {setTimeout(resolve, 2000, 'two');});Promise.race([p1, p2]).then((value) => {console.log(value);//这里p1延时1s 所以肯定是one});

具体的 顺便加了个wx.request 很多行有解释

stop:function(){//从这里开始 是new了一个a方法let a = new Promise((resolve,reject) => {console.log("进方法了...... 从这里开始就是要正常执行的代码 直接放进去就行")console.log("第一个方法,下面示例wx.request")wx.request({url: url,method: method,data: data,header: {...省略},dataType: 'json',success: function (res) {//这里就相当于return了 因为Promise是new的一个方法 需要返回//具体用resolve还是reject 其实都一样的 自己能判断出来执行开始之后要怎么写就可以了resolve("操作成功");},fail: function (err) {resolve("操作失败");}})});//a方法结束//b方法很简单 设置一个setTimeOut let b = new Promise((resolve,reject)=>{//reject:返回失败 5000:延迟5秒执行 '页面丢失了,请重新进入':返回的数据setTimeout(reject,5000,'页面丢失了,请重新进入')})//b方法结束//这里调用a,b俩方法 上面的new a和b只是创建了 此处和上面并没有执行 //这里可以简写 a,b也可以有c(多个函数同时运行Promise.race([a,b,c]),不管有几个,只执行最快的一个)let aa = Promise.race([a,b]);//这里开始执行 .then就是开始执行aa aa为Promise.race([a,b]) 把a和b放一起运行了aa.then(//这里返回resolve就进入success 可以根据返回值判断执行完正常的代码如何继续下一步success=>{//这里可以加一个判断//if(success == '操作成功'){...}else if(success == '操作失败'){...}console.log(success);},//这里返回reject就进入err 可以根据返回值判断执行完正常的代码如何继续下一步err=>{console.log(err);//一个普通的wx.showModal 微信api有wx.showModal({title: '报错了',//这个err就是上面返回的字符串 '页面丢失了,请重新进入'content: err,showCancel: false,confirmText: '确定',//这个是wx.showModal弹框 点了确定之后执行的操作 示例跳别的页面success:(res) => {//一个普通的跳转页面操作wx.reLaunch({url: '/pages/aaa/aaa',})}})})},

原创作者:h仔

参考:/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/race

如果觉得《微信小程序设置请求超时wx.request等 简单易懂!》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。