//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. 【手把手教程】uniapp + vue 从0搭建仿微信App聊天应用:腾讯云TXIM即时通讯的最佳实践

    基于uniapp + vue 实现仿微信App聊天应用实践,实现以下功能 1: 用户登陆 2: 聊天会话管理 3: 文本/图片/视频/定位消息收发 4: 贴图表情消息收发 5: 一对一语音视频在线通话 ...

  2. Windows系统安装Redis服务

    下载压缩包,登录 https://github.com/MicrosoftArchive/redis/releases  下载Redis-x64-3.0.504.zip 我也上传了一份  https: ...

  3. 【LeetCode】409. Longest Palindrome 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:字典统计次数 方法二:HashSet 方法三 ...

  4. 【LeetCode】862. Shortest Subarray with Sum at Least K 解题报告(C++)

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

  5. 【LeetCode】689. Maximum Sum of 3 Non-Overlapping Subarrays 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/maximum- ...

  6. 【LeetCode】621. Task Scheduler 解题报告(Python & C++)

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

  7. 【LeetCode】423. Reconstruct Original Digits from English 解题报告(Python)

    [LeetCode]423. Reconstruct Original Digits from English 解题报告(Python) 标签: LeetCode 题目地址:https://leetc ...

  8. 使用.NET 6开发TodoList应用(10)——实现DELETE请求以及HTTP请求幂等性

    系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 先说明一下关于原本想要去更新的PATCH请求的文章,从目前试验的情况来看,如果是按照.NET 6的项目结构(即只使用一个Pro ...

  9. [C++]C++ STL库函数大全

    #include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 # ...

  10. CS5218替代AG6310方案设计|替代AG6310方案|DP转HDMI 4K30Hz转换方案

    AG6310是一款实现显示端DP口转HDMI数据转换器.AG6310是一款单芯片解决方案,通过DP端口连接器传输视频和音频流,其DP1.2支持可配置的1.2和4通道,分别为1.62Gbps.2.7Gb ...