//promise抛出异常
new Promise((resolve,reject)=>{
resolve("成功")
}).then(res=>{
if(res !== 200){
// throw new Error("错误")
// 或者
return Promise.reject("异常")
}
}).catch(error=>{
// console.log(error.message);
console.log(error);
})

promise的队列,按顺序执行:原理是需要等待上一个promise执行完才可以执行下一个

   //promise按顺序执行代码的封装
/*
按顺序执行的话,就是等上一个primise执行完,再执行下一个
*/
//1.这个是最基础的方式,代码比较冗杂
let promise =Promise.resolve("薯片");
promise.then(res =>{
return new Promise(resolve=>{
console.log(res); setTimeout(() => {
resolve(res +"好吃")
}, 1000);
})
}).then(res =>{
return new Promise(resolve=>{
console.log(res);
setTimeout(() => {
resolve(res +"不能多吃")
}, 1000);
})
}).then(res=>{
console.log(res);
})

 2.该方式简化了  这里的promise的赋值就是相当于上一个promise执行完后,resolve()了,才执行下一个
      let promise = Promise.resolve("薯片");
promise = promise.then(res => {
return new Promise(resolve => {
console.log(res);
setTimeout(() => {
resolve(res + "好吃")
}, 1000);
})
})
promise = promise.then(res =>{
return new Promise(resolve => {
console.log(res);
setTimeout(() => {
resolve(res +"不能多吃")
}, 1000);
})
})
promise.then(res =>{
return new Promise(resolve => {
console.log(res); })
})
 3.最佳方式
function query(nums) {
let promise = Promise.resolve();
nums.forEach(item => {
promise = promise.then(() => {
return new Promise(resolve => {
setTimeout(() => {
console.log(item);
resolve()
}, 1000);
})
})
});
}
query([1, 2, 3, 4, 5, 6])

//结果都是一秒一秒按顺序执行

 function query(nums) {
let promise = Promise.resolve();
nums.forEach(item => {
promise = promise.then(() => {
return item();
})
});
}
function p1() {
return new Promise(resolve => {
setTimeout(() => {
console.log("p1");
resolve()
}, 1000);
})
}
function p2() {
return new Promise(resolve => {
setTimeout(() => {
console.log("p2");
resolve()
}, 1000);
})
}
query([p1, p2])

promise抛异常,执行队列的更多相关文章

  1. 线程执行synchronized同步代码块时再次重入该锁过程中抛异常,是否会释放锁

    一个线程执行synchronized同步代码时,再次重入该锁过程中,如果抛出异常,会释放锁吗? 如果锁的计数器为1,抛出异常,会直接释放锁: 那如果锁的计数器为2,抛出异常,会直接释放锁吗? 来简单测 ...

  2. poco json 中文字符,抛异常JSON Exception -->iconv 转换 备忘录。

    起因 最近linux服务器通信需要用到json. jsoncpp比较出名,但poco 1.5版本以后已经带有json库,所以决定使用poco::json(linux 上已经用到了poco这一套框架). ...

  3. iOS开发——网络篇——UIWebview基本使用,NSInvocation(封装类),NSMethodSignature(签名),JavaScript,抛异常,消除警告

    一.UIWebView简介 1.UIWebView什么是UIWebViewUIWebView是iOS内置的浏览器控件系统自带的Safari浏览器就是通过UIWebView实现的 UIWebView不但 ...

  4. Promise和setTimeout执行顺序 面试题

    看到过下面这样一道题: (function test() { setTimeout(function() {console.log(4)}, 0); new Promise(function exec ...

  5. C# 异常 抛异常的时候 同时抛出 传入的参数

    abp的审计日志都把这些功能实现了 可以借鉴 抛异常的时候 同时抛出 传入的参数 大致这样实现,aop,方法执行先,先把参数写入到栈中,抛异常时,栈中自然就有此时的参数了. 可用于重现该异常. 获取把 ...

  6. 千万别在Java类的static块里写会抛异常的代码!

    public class Demo{ static{ // 模拟会抛异常的代码 throw new RuntimeException(); } } 如果你在Java类的static块里写这样会抛异常的 ...

  7. 记一次Task抛异常,调用线程处理而引发的一些随想

    记一次Task抛异常,调用线程处理而引发的一些随想 多线程调用,任务线程抛出异常如何在另一个线程(调用线程)中捕获并进行处理的问题. 1.任务线程在任务线程执行语句上抛出异常. 例如: private ...

  8. .net core 返回业务错误(不抛异常)

    在开始之前你需要知道: 1.通过抛异常--全局捕获异常的方式返回业务错误信息性能是非常差的(不知道为什么的可以百度一下) 2.如何将错误信息绑定到mvc模型验证中 自定义返回内容 //返回内容接口 p ...

  9. 为什么 C# 访问 null 字段会抛异常?

    一:背景 1. 一个有趣的话题 最近在看 硬件异常 相关知识,发现一个有意思的空引用异常问题,拿出来和大家分享一下,为了方便讲述,先上一段有问题的代码. namespace ConsoleApp2 { ...

随机推荐

  1. JAVA结合WebSocket实现简单客服聊天功能

    说明:该示例只简单的实现了客服聊天功能. 1.聊天记录没有保存到数据库中,一旦服务重启,消息记录将会没有,如果需要保存到数据库中,可以扩展 2.页面样式用的网上模板,样式可以自己进行修改 3.只能由用 ...

  2. 【LeetCode】253. Meeting Rooms II 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序+堆 日期 题目地址:https://leetco ...

  3. 【LeetCode】538. Convert BST to Greater Tree 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 日期 题目地址:https://leetcod ...

  4. 【剑指Offer】二进制中1的个数 解题报告(Python)

    题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 解题方法 这个题如果使 ...

  5. EMA

    目录 源 设置 结果 源 Exponential moving average (EMA) 是一个非常有用的trick, 起到加速训练的作用. 近来发现, 该技巧还可以用于提高网络鲁棒性(约1% ~ ...

  6. Linux学习笔记-韩顺平

    这是我学习哔哩哔哩UP主韩顺平的2021韩顺平图解Linux课程的学习笔记. 课程地址:2021韩顺平图解Linux课程 Linux基础篇-Linux目录结构 基本介绍 linux 的文件系统是采用级 ...

  7. python爬虫实例——基于python实现有道云翻译接口

    # 分析包# 分析post请求中参数# 使用python模拟lts.sign.salt参数运算# 执行结果> > 1.按F12对网页进行分析,填写内容后自动翻译的功能一般是通过ajax实现 ...

  8. TortoiseGit使用ssh-keygen生成的私钥

    1.说明 使用TortoiseGit自带的PuTTY Key Generator工具, 把ssh-keygen生成的私钥转换为Putty使用的.ppk文件, 然后在拉取Git代码时, 加载对应的.pp ...

  9. 开源社区Review代码步骤

    以Ranger项目为例,说明开源社区Review代码详细步骤. 1.寻找合适的issue进行review 首先自己需要是某个开源项目的committer, 要有合入代码的权限. 2.review代码 ...

  10. RabbitMQ基础教程系列

    Ubuntu16.04下,erlang安装和rabbitmq安装步骤 Ubuntu16.04下,rabbimq集群搭建 C# .net 环境下使用rabbitmq消息队列 .net core使用rab ...