async / await的异常捕获,获取错误信息
web Vue 2023-06-06 689 0
关于本站

“最难不过坚持”

本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作

有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339

6516792 2619 39
最新评论
https://jueru.net/
评 留言
:weixiao:
评 留言
:shuijiao: :weiqu: :zhenbang: :leng:
评 留言
:yiwen: :yiwen: :yiwen: :yiwen:
评 EasySass: could not generate CSS file. See Output panel for details.
这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
评 TP6模型事件-查询后onAfterRead不好用
文章标签更多
ThinkPHP (254)
Mysql (58)
DedeCms (33)
jQuery (67)
证件照 (1)
setInc (4)
setDec (4)
onclick (5)
打开边栏(ESC) 关闭边栏(ESC)

async / await的异常捕获,获取错误信息

1,只是这样写是,捕获不到异常的

		async getList3() {
			let resp = await this.httpTest();
			console.log(resp);
		},
2. 使用try / catch来捕获异常,这样的话代码就看起来舒服多了,catch里面的err就是我们所捕获的异常

		async getList6() {
			try {
				let resp = await this.httpTest();
				console.log(resp);
			} catch (err) {
				console.log(err);
			}
		},
但是问题,又来了,我在一个方法里面写了好几个请求方法,这个时候该怎么办?有的人的写法

		async getList6() {
			try {
				let resp1 = await this.httpTest();
				console.log(resp1);
				let resp2 = await this.httpTest();
				console.log(resp2);
				let resp3 = await this.httpTest();
				console.log(resp3);
			} catch (err) {
				console.log(err);
			}
		},
合理吗?显然是不合理!这个err值只输出了一次,我怎么知道这捕获的是谁的?,那怎么办?每个都写一个try / catch,是个解决办法,像下面这样,好看吗,看着还整洁,如果再加上业务代码处理,那就写了好多代码啊。。。作为一个懒人,我们需要想点招

		async getList6() {
			try {
				let resp1 = await this.httpTest();
				console.log(resp1);
			} catch (err) {
				console.log(err);
			}
			try {
				let resp2 = await this.httpTest();
				console.log(resp2);
			} catch (err) {
				console.log(err);
			}
			try {
				let resp3 = await this.httpTest();
				console.log(resp3);
			} catch (err) {
				console.log(err);
			}
		},
3. 一个小招,我们写了一个test的方法,做一个简单的封装

		test(fn) {
			return new Promise(async resovle => {
				try {
					let res = await fn;
					resovle([null, res]);
				} catch (err) {
					resovle([err, null]);
				}
			});
		},
 
        //或者这样
        async test(fn) {
	        try {
		        let resp = await fn
		        return [null, resp]
	        } catch (err) {
		        return [err, null]
	        }
        }
调用:

		async getList5() {
			let [err, res] = await this.test(this.httpTest());
			console.log('res===>', res);
			console.log('err===>', err);
			let [err1, res1] = await this.test(this.httpTest('success'));
			console.log('res1===>', res1);
			console.log('err1===>', err1);
			let [err2, res2] = await this.test(this.httpTest('fail'));
			console.log('res2===>', res2);
			console.log('err2===>', err2);
		},

版权声明:本篇文章来源于网络。 来源链接

相关推荐
接口返回request failed with status code 500错误
Vue | 2023-02-20 2668
接口返回request failed with status code 500错误 登录界面,验证账号密码成功,但是返回500错误 可能原因:linux服务器,用tp5搭建的后台及接口,会生成一部分缓存文件,但是linux默认没有权限创建数据,所以,只要在缓存文件夹runtime添加写的权限即可
vue项目npm run serve默认浏览器打开
Vue | 2022-11-16 1906
1、在vue项目中,输入命令行  npm run serve   浏览器实现自动打开功能,需要添加 在配置文件(package.json)中添加 --open 2、浏览器自动打开后,可能会出现网址0.0.0.0:8080页面错误,见图 3、解决方法: 在--open后面再加上--...
评论:0条
评论加载中...
发表评论