Promise在await报错后,如何继续往下跑...
一、resolve
当a>0时,正常情况依次输出A、B、C
console.log("A");
let result = await this.test();
console.log("C:",result);
private test(){
return new Promise((resolve,reject)=>{
console.log("B");
let a = 3;
if(a > 0){
resolve(a);
}else{
reject(0);
}
});
}

二、没有处理失败信息,导致程序无法继续执行
当a<0时。输出A、B后,C无法输出,程序无法继续往下执行。
console.log("A");
let result = await this.test();
console.log("C:",result);
private test(){
return new Promise((resolve,reject)=>{
console.log("B");
let a = -3;
if(a > 0){
resolve(a);
}else{
reject(0);
}
});
}

三、catch
增加catch处理错误,程序可以继续执行
console.log("A");
let result = await this.test();
console.log("C:",result);
private test(){
return new Promise((resolve,reject)=>{
console.log("B");
let a = -3;
if(a > 0){
resolve(a);
}else{
reject(0);
}
}).catch((err)=>{
console.log("err:", err);
});
}
这样也可以
let result = await this.test().catch(()=>{});

四、使用then处理错误,程序继续执行
换一种写法,使用then。
console.log("A");
let result = await this.test().then((res)=>{
console.log("success:", res);
},(res)=>{
console.log("fail:", res);
});
console.log("C:",result);
private test(){
return new Promise((resolve,reject)=>{
console.log("B");
let a = -3;
if(a > 0){
resolve(a);
}else{
reject(0);
}
});
}

五、在await处使用catch,程序继续执行
protected async createGameScene() {
console.log("A");
let result = await this.test().catch((err)=>{console.log("err:",err)});
console.log("C:",result);
}
private test(){
return new Promise((resolve,reject)=>{
console.log("B");
let a = -3;
if(a > 0){
resolve(a);
}else{
reject(0);
}
});
}

六、在test里catch后,程序会不执行then的reject,而是resolve。
protected async createGameScene() {
console.log("A");
let result = await this.test().then((res)=>{
console.log("C:",res);
},(res)=>{
console.log("D:",res)
}).catch((err)=>{console.log("E:",err)});
console.log("F:",result);
}
private test(){
return new Promise((resolve,reject)=>{
console.log("B");
let a = -3;
if(a > 0){
resolve(a);
}else{
reject(0);
}
}).catch((err)=>{console.log("test err:", err)});
}

Promise在await报错后,如何继续往下跑...的更多相关文章
- 从async await 报错Unexpected identifier 谈谈对上下文的理解
原文首发地址: 先简单介绍下async await: async/await是ES6推出的异步处理方案,目的也很明确:更好的实现异步编程. 详细见阮大神 ES6入门 现在说说实践中遇到的问题:使用 ...
- DB2 sql报错后查证原因与解决问题的方法
1.对于执行中的报错,可以在db2命令行下运行命令 : db2=>? SQLxxx 查看对应的报错原因及解决方法. 2.错误SQL0206N SQLSTATE=42703 检测到一个未定义的列 ...
- 【转】Latex编译报错后中断编译并改正,然后重复出现不明原因报错的解决方法
转自:https://www.douban.com/note/419828344/ 目录: 一.问题描述 二.测试情况(可以跳过,直接看建议) 三.建议 四.参考资料 正文: 问题描述: 错漏某个符号 ...
- python踩坑系列——报错后修改了.py文件,但是依然报错
一开始.py文件中的函数名大小写错了,但是在终端是对的,报错: 'module' object has no attribute '某函数名' 后来就去修改.py文件.结果重新import该.py文件 ...
- Git Push大文件报错后如何撤回
昨晚在提交一个项目代码时,不小心把数据库备份文件也一起Commit了:到最后Push的时候报错了.最后弄了半天解决了,在此记录下. 如下图,文件有108M. 项目放在第三方托管平台上,根据提示查看了原 ...
- Java-Web中访问某个指定工程中的文件,报错后发现访问的文件是另一个工程里面的文件
问题: 浏览器向我的bingou项目中的UserDaoImpl.java发送请求, myeclipse报错:空指针异常 点击报错行之后,错误给定位到了另一个项目中的的一个文件 解决: 原因是文件名错误 ...
- 安装node-sass及报错后解决方案
使用npm install 命令安装node-sass时,经常出现安装失败的情况.原因在于npm服务器在美国,还有就是某强大的防火墙作用.导致模块无法下载. 1 npm install node-sa ...
- @transactional注解,报错后数据库操作回滚失败
1. https://jingyan.baidu.com/article/3a2f7c2e27d51b26afd611ff.html 2. https://blog.csdn.net/lee_star ...
- Vue -- 项目报错整理(2):IE报错 - ‘SyntaxError:strict 模式下不允许一个属性有多个定义‘ ,基于vue element-ui页面跳转坑的解决
随机推荐
- $(this).bind("change",itemno_change);
如果是onchange 会出错,超过3个可能就无效.
- [转]java线程安全、jstack\线程dump、内存查看分析总结
http://jameswxx.iteye.com/blog/808546 java线程安全总结二 http://jameswxx.iteye.com/blog/1041173 jstack和线程du ...
- nginx隐藏server信息和版本信息
1.隐藏版本信息 在nginx.conf里面添加 server_tokens off; 2.隐藏server信息 需要重新编译ngnix进入解压出来的nginx 源码目录 vi src/http/ng ...
- 常用Linq示例代码
class Program { static void Main(string[] args) { //1. Aggregate int[] testArr = new int[] { 1, 2, ...
- XMPP协议实现即时通讯底层书写 (一)--从RFC6121阅读開始
Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence ok,额瑞巴蒂,说好的阅读RFC61 ...
- Cocos2dx3.0 TextField 输入中文的问题
一开始无法输入中文, 显示出来的是乱码, 修改一个函数, 下面是修改过后的代码 void GLView::onGLFWCharCallback(GLFWwindow *window, unsigned ...
- CreateProcess函数详解
在windows程序设计五中有详解 CreateProcess 说明: WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件. 函数原型: B ...
- Spring4 Quartz2 动态任务,Spring4整合quartz2.2.3简单动态任务
Spring4 Quartz2 动态任务 Spring4整合quartz2.2.3简单动态任务, Quartz2.2.3简单动态定时任务二, SimpleScheduleBuilder简单定时任务 ...
- MongoDB(六)-- 集群搭建
一.集群介绍 sharding通过将数据集分布于多个也称作分片(shard)的节点上来降低单节点的访问压力.每个分片都是一个独立的数据库,所有的分片组合起来构成一个逻辑上的完整意义的数据库.因此,分片 ...
- 第1章 Ansible 简介
1. Ansible 优点 (1) 易读的语法:Ansible使用playbook作为配置管理脚本,playbook是基于YAML开发的,是一种易于读写的数据格式(2) 远程主机无须安装任何依赖:被A ...