天天看点

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>           

复制