Promise对象、传参以及错误处理

在大部分情况下我们的程序都是在进行异步操作,需要嵌套多次callback,使得程序变得复杂!ES6中提供了Promise对象,将非阻塞I/O变为阻塞I/O,把异步变同步解决一些异步问题!

我们使用promise,返回一个状态后,使用then执行下一步方法

如何使用Promise?

使用Promise

		<script>
			console.log("开始执行")
			let p = new Promise((resolve,reject)=>{
				setTimeout(()=>{
					console.log("执行中...")
					resolve()
				},2000)
			})
			p.then(()=>{
				console.log("执行结束")
			})
		
		</script>

new 一个Promise对象,传入参数resolve,和reject,resolve表示成功执行反馈结果,reject表示未成功执行!

传参

我们可以在resolve中定义实参,在then方法后接收到

			console.log("开始执行")
			let p = new Promise((resolve,reject)=>{
				setTimeout(()=>{
					console.log("执行中...")
					resolve(6)
				},2000)
			})
			p.then((timer)=>{
				console.log(timer+"s执行结束")
			})

错误处理

我们如何传递错误的promise呢?我们可以将状态修改为reject,表示错误执行未成功,再次可以传递实参到then方法的第二个参数执行时候接收这个错误抛出传递的信息!

<script>
			console.log("开始执行")
			let p = new Promise((resolve,reject)=>{
				let a = 0;
				setTimeout(()=>{
					if(a===true){
						console.log("执行中...")
						resolve()
					}else{
						console.log("任务执行失败")
						reject("404 NOT");
					}
				},2000)
			})
			p.then(()=>{
				console.log("执行结束")
			},(err)=>{
				console.log("执行失败,重新尝试"+err)
			})
		
		</script>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

Python 基础语法

Python语言与Perl,C和Java等语言有许多相似之处。但是,也存在一些差异。 在本章中我们将来学习Python的基础语法,让你快速学会Python编程...

4126
来自专栏大前端_Web

详解ES7的async及webpack配置async

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

4482
来自专栏Scott_Mr 个人专栏

React Native 系列(一) -- JS入门知识

38110
来自专栏xingoo, 一个梦想做发明家的程序员

【AngularJS】—— 4 表达式

前面了解了AngularJS的基本用法,这里就跟着PDF一起学习下表达式的相关内容。   在AngularJS中的表达式,与js中并不完全相同。   首先...

2095
来自专栏有趣的Python和你

Flask学习笔记之模板(一)

之前的视图函数返回的都是字符串,这样是很不利于网站建设,大家都知道,我们都网页构造三大元素(html,css,js),那这些数据如何通过视图函数返回了?答案就是...

1332
来自专栏黒之染开发日记

对less的理解

less是写css时可以采用的另一种写法,用less的格式写出来的东西,可以通过编译器编译成css。也就是可以使用某种方法,把less文件变成css文件。编译成...

1792
来自专栏python学习之旅

Python+Selenium笔记(十三):Page Object设计模式

(一) 前言 简单的说就是分为2层,页面class 和测试class。 页面class:分为父类和子类(子类指具体的页面,每一个页面都创建一个类),父类中定义公...

4437
来自专栏coding...

swift3.0 基础练习-实现99乘法表

723
来自专栏Dawnzhang的开发者手册

easyui 进阶之表单校验、自定义校验

easyui是一种基于jQuery的用户界面插件集合,它为创建现代化,互动,JavaScript应用程序,提供必要的功能,完美支持HTML5网页的完整框架,节省...

1552
来自专栏Golang语言社区

JS对象与JSON格式数据相互转换

最近遇到这个问题,JS对象和JSON格式数据的相互转换。其实,也就是两个问题:JS对象转换成为JSON格式数据、JSON格式数据转换成为JS对象 目前的项目数据...

4055

扫码关注云+社区

领取腾讯云代金券