promise抛异常,执行队列
//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抛异常,执行队列的更多相关文章
- 线程执行synchronized同步代码块时再次重入该锁过程中抛异常,是否会释放锁
一个线程执行synchronized同步代码时,再次重入该锁过程中,如果抛出异常,会释放锁吗? 如果锁的计数器为1,抛出异常,会直接释放锁: 那如果锁的计数器为2,抛出异常,会直接释放锁吗? 来简单测 ...
- poco json 中文字符,抛异常JSON Exception -->iconv 转换 备忘录。
起因 最近linux服务器通信需要用到json. jsoncpp比较出名,但poco 1.5版本以后已经带有json库,所以决定使用poco::json(linux 上已经用到了poco这一套框架). ...
- iOS开发——网络篇——UIWebview基本使用,NSInvocation(封装类),NSMethodSignature(签名),JavaScript,抛异常,消除警告
一.UIWebView简介 1.UIWebView什么是UIWebViewUIWebView是iOS内置的浏览器控件系统自带的Safari浏览器就是通过UIWebView实现的 UIWebView不但 ...
- Promise和setTimeout执行顺序 面试题
看到过下面这样一道题: (function test() { setTimeout(function() {console.log(4)}, 0); new Promise(function exec ...
- C# 异常 抛异常的时候 同时抛出 传入的参数
abp的审计日志都把这些功能实现了 可以借鉴 抛异常的时候 同时抛出 传入的参数 大致这样实现,aop,方法执行先,先把参数写入到栈中,抛异常时,栈中自然就有此时的参数了. 可用于重现该异常. 获取把 ...
- 千万别在Java类的static块里写会抛异常的代码!
public class Demo{ static{ // 模拟会抛异常的代码 throw new RuntimeException(); } } 如果你在Java类的static块里写这样会抛异常的 ...
- 记一次Task抛异常,调用线程处理而引发的一些随想
记一次Task抛异常,调用线程处理而引发的一些随想 多线程调用,任务线程抛出异常如何在另一个线程(调用线程)中捕获并进行处理的问题. 1.任务线程在任务线程执行语句上抛出异常. 例如: private ...
- .net core 返回业务错误(不抛异常)
在开始之前你需要知道: 1.通过抛异常--全局捕获异常的方式返回业务错误信息性能是非常差的(不知道为什么的可以百度一下) 2.如何将错误信息绑定到mvc模型验证中 自定义返回内容 //返回内容接口 p ...
- 为什么 C# 访问 null 字段会抛异常?
一:背景 1. 一个有趣的话题 最近在看 硬件异常 相关知识,发现一个有意思的空引用异常问题,拿出来和大家分享一下,为了方便讲述,先上一段有问题的代码. namespace ConsoleApp2 { ...
随机推荐
- Shell bash和sh区别
Shell 中文意思贝壳,寓意类似内核的壳.Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务.Shell 是一个用 C 语言编写的程序,它是用户使用 Li ...
- 基于DNN的残余回声抑制
摘要 由于功率放大器或扬声器的限制,即使在回声路径完全线性的情况下,麦克风捕获的回声信号与远端信号也不是线性关系.线性回声消除器无法成功地消除回声的非线性分量.RES是在AES后对剩余回声进行抑制的一 ...
- cmake配置MFC项目属性
MFC的使用 使用下面的代码设置为: # 设置MFC的使用 SET(CMAKE_MFC_FLAG 2) 这里的 2 代表: 在共享 DLL 中使用 MFC, 1代表在静态库中使用 MFC 设置字符集 ...
- 难搞的偏向锁终于被 Java 移除了
背景 在 JDK1.5 之前,面对 Java 并发问题, synchronized 是一招鲜的解决方案: 普通同步方法,锁上当前实例对象 静态同步方法,锁上当前类 Class 对象 同步块,锁上括号里 ...
- Reliable evaluation of adversarial robustness with an ensemble of diverse parameter-free attacks
目录 概 主要内容 Auto-PGD Momentum Step Size 损失函数 AutoAttack Croce F. & Hein M. Reliable evaluation of ...
- 使用 jQuery 选择器获取页面元素,然后利用 jQuery 对象的 css() 方法设置其 display 样式属性,从而实现显示和隐藏效果。
查看本章节 查看作业目录 需求说明: 使用 jQuery 选择器获取页面元素,然后利用 jQuery 对象的 css() 方法设置其 display 样式属性,从而实现显示和隐藏效果. 具体要求如下: ...
- EntityFrameworkCore数据迁移(一)
.net core出来已经有很长一段时间了,而EentityFrameworkCore(后面简称EFCore)是.net framework的EntityFramework在.net core中的实现 ...
- 把rocksdb配置成leveldb
将rocksdb配置成leveldb 1.配置方法 配置方式有三种: 第一种适合进行性能测试对比:是以参数形式在运行db_bench或ycsb-c的时候以参数形式将rocksdb将其配置成leveld ...
- PHP DateTime类常用方法总结
实例化: $date = new DateTime(); $date = new DateTime('2018-01-01'); $date = new DateTime('tomorrow'); $ ...
- monkey怎么做APP自动化?
前言: monkey是andriod平台自动化测试的一种手段,通过monkey程序模拟触摸屏幕.滑动,滚屏,按键来对设备进行压力测试,检测程序多久会出现异常第一种:设置好命令,做随机自动化 什么时候可 ...