一、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. HDU 3970 Harmonious Set 容斥欧拉函数

    pid=3970">链接 题解:www.cygmasot.com/index.php/2015/08/17/hdu_3970 给定n  求连续整数[0,n), 中随意选一些数使得选出的 ...

  2. 动态为页面添加CSS样式文件引用

    动态为页面添加CSS样式文件引用: if (document.createStyleSheet) { //IE document.createStyleSheet("./Themes/Def ...

  3. java获取map中的最小KEY,最小VALUE

    import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.Map ...

  4. [OpenCV] Samples 03: kmeans

    注意Mat作为kmeans的参数的含义. 扩展:高维向量的聚类. 一.像素聚类 #include "opencv2/highgui.hpp" #include "open ...

  5. C#中AppDomain.CurrentDomain.BaseDirectory与Application.StartupPath的区别

    // 获取程序的基目录. System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径. System.Diagnostics.Process.G ...

  6. JVM虚拟机内存模型以及GC机制

    JAVA堆的描述如下: 内存由 Perm 和 Heap 组成. 其中 Heap = {Old + NEW = { Eden , from, to } } JVM内存模型中分两大块,一块是 NEW Ge ...

  7. Spring getBean 首字母大小写问题

    如果类第一个字母大写第二个小写,那么首字母小写获取bean 如果第一个和第二个字母都是大写的,那个获取bean首字母要大写

  8. centos7安装python-3.5

    sudo yum install gcc wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz sudo cp Python-.t ...

  9. vux 使用 font-awesome

    1)XIcon 太多坑,不好用,无奈之下,搞了一下 font-awesome 2)下载 font-awesome 源码,并放置到 根目录/src 目录下 ,传送门:http://fontawesome ...

  10. AE插件开发的一些总结

    首先会遇到第一个问题,为什么输出的aex文件不在bin目录下,而在别的目录下.其实问题出在链接器的设置里.把这个改成自己想要的目录就OK 然后一些object的报错,直接把警告等级改成0就可以了.属性 ...