一、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报错后,如何继续往下跑...的更多相关文章

  1. 从async await 报错Unexpected identifier 谈谈对上下文的理解

    原文首发地址: 先简单介绍下async await: async/await是ES6推出的异步处理方案,目的也很明确:更好的实现异步编程.   详细见阮大神 ES6入门 现在说说实践中遇到的问题:使用 ...

  2. DB2 sql报错后查证原因与解决问题的方法

    1.对于执行中的报错,可以在db2命令行下运行命令 : db2=>? SQLxxx 查看对应的报错原因及解决方法. 2.错误SQL0206N SQLSTATE=42703  检测到一个未定义的列 ...

  3. 【转】Latex编译报错后中断编译并改正,然后重复出现不明原因报错的解决方法

    转自:https://www.douban.com/note/419828344/ 目录: 一.问题描述 二.测试情况(可以跳过,直接看建议) 三.建议 四.参考资料 正文: 问题描述: 错漏某个符号 ...

  4. python踩坑系列——报错后修改了.py文件,但是依然报错

    一开始.py文件中的函数名大小写错了,但是在终端是对的,报错: 'module' object has no attribute '某函数名' 后来就去修改.py文件.结果重新import该.py文件 ...

  5. Git Push大文件报错后如何撤回

    昨晚在提交一个项目代码时,不小心把数据库备份文件也一起Commit了:到最后Push的时候报错了.最后弄了半天解决了,在此记录下. 如下图,文件有108M. 项目放在第三方托管平台上,根据提示查看了原 ...

  6. Java-Web中访问某个指定工程中的文件,报错后发现访问的文件是另一个工程里面的文件

    问题: 浏览器向我的bingou项目中的UserDaoImpl.java发送请求, myeclipse报错:空指针异常 点击报错行之后,错误给定位到了另一个项目中的的一个文件 解决: 原因是文件名错误 ...

  7. 安装node-sass及报错后解决方案

    使用npm install 命令安装node-sass时,经常出现安装失败的情况.原因在于npm服务器在美国,还有就是某强大的防火墙作用.导致模块无法下载. 1 npm install node-sa ...

  8. @transactional注解,报错后数据库操作回滚失败

    1. https://jingyan.baidu.com/article/3a2f7c2e27d51b26afd611ff.html 2. https://blog.csdn.net/lee_star ...

  9. Vue -- 项目报错整理(2):IE报错 - ‘SyntaxError:strict 模式下不允许一个属性有多个定义‘ ,基于vue element-ui页面跳转坑的解决

随机推荐

  1. Service 保活法之二

    正确应对系统内存不足,OnLowMemory和OnTrimMemory回调 理论上,一个具备良好行为的应用应该考虑Android系统内存紧张的问题,这样有助于维持一个良好的生态.在前人的基础上,本文对 ...

  2. Windbg在软件调试中的应用

    Windbg在软件调试中的应用 Windbg是微软提供的一款免费的,专门针对Windows应用程序的调试工具.借助于Windbg, 我们常见的软件问题:软件异常,死锁,内存泄漏等,就可以进行高效的排查 ...

  3. phpcms 字符截取str_cut的使用

    PHPCMS中截取字符串用的是 str_cut 系统函数,通常在输出标题或者是内容摘要的时候使用来限制字符串的字符,这样就可以防止因字符串而变成的页面变形等问题. 我们来看一下这个函数,在PHPCMS ...

  4. mysql中如何修改表的名字?修改表名?

    需求描述: 今天在进行mysql表的历史数据迁移,需要将某张表进行备份,修改表的名字,在此记录下操作过程. 操作过程: mysql> create table ts01 like ti_o_sm ...

  5. linux shell搜索某个字符串,然后在后面加上字符串?字符串后面插入字符串?sed字符串后面插入字符串?

    需求描述: 今天在配置nrpe.cfg这个文件,里面有allowed_hosts的IP地址,需要加上监控主机的地址,所以首先要搜索 到这个地址,然后呢,加上监控主机的地址,考虑通过sed命令来实现 操 ...

  6. Docker技术原理

    Docker技术原理之Linux Namespace(容器隔离) https://blog.csdn.net/songcf_faith/article/details/82748987 Docker技 ...

  7. Java利用for循环输出空心的菱形

    编写程序,在控制台上输出空心菱形,对角距离为6. public class Diamond { public static void main(String[] args) { printHollow ...

  8. 【Android】Android中如何取消调转界面后EditText默认获取聚焦问题

    参考资料: https://www.cnblogs.com/dream-cichan/p/aaaa.html http://blog.csdn.net/u013703461/article/detai ...

  9. 启用sharepoin2013中的ChartWebPart

    首先看一张sharepoint2013中ChartWebPart的效果图. 在sharepoint2010中加入了一个新的webpart,叫ChartWebPart,提供了对数据的图表展示,可以对数据 ...

  10. WopiServerTutorial

    Program.cs using System; using System.Collections.Generic; using System.IO; using System.Linq; using ...