JS-Promise对象


前言

本文简要介绍了Promise对象中的基础内容。

一、Promise的含义

1.Promise作用

Promise是JS为异步编程提供的解决方案、主要用来解决回调地域问题。简单来说,Promise是一个容器,里面存放的是将来才会结束的事件(异步请求)。

2.Promise的三种状态

Pending进行中
Fulfilled已成功
Rejected已失败

3.Promise的特点

  • Promise对象的三种状态,不受外界的影响,只有Promise中存放的 将来会结束的事件才会影响。
  • Promise状态一旦改变、 不可逆

二、基础用法

1.创建一个Promise 对象

  • ES6规定,Promise对象是一个构造函数,在创建对象的时候,需要传入一个回调函数;
  • 回调函数有2个参数,分别代表resolve (解决),reject (拒绝),并且都是函数;
  • 调用resolve 函数,代表Promise的状态会从Pending ==> fulfilled
    调用reject 函数,代表promise的状态会从Pending ==> rejected
let promise = new Promise(function(resolve,reject){
//主要编写的是 将来会结束的事件代码(异步请求)
				
	//调用resolve 函数
	resolve();
	//调用reject 函数
	//reject();
				
});
	console.log(promise);//promise的状态是fulfilled

若调用reject 函数,promise的状态变成rejected

2.Promise中then和catch方法

  • promise中提供了then和catch两个方法,分别用来处理 已成功和已失败的状态;
  • 如果promise 状态为fulfilled ,则调用then方法来处理对应的成功的逻辑;
    如果promise状态为rejected ,则调用catch 方法来处理对应的失败的逻辑;
  • then和catch 方法的参数也是一个函数,而且这个方法返回的都是一个新的Promise对象;
  • then和catch 在函数中可以return 一个值,如果没有 return 默认代表返回undefiend;
  • 如果return的是一个非promise 对象,那么会通过Promise.resolve()将返回的值转成一个状态为fulfilled 的Promise对象;
    如果return的是一个promise 对象,则返回一个新的promise对象,该promise对象的状态 由返回的Promise对象状态来确定。

代码如下(示例):

let promise = new Promise(function(resolve,reject){
	//调用resolve 函数
	resolve("ok");
	//reject("error");
});
setTimeout(function() {
	console.log("++++++++++++++")
}, 0);
	let s1 = promise.then(function(s){
		console.log("解决~~",s)
	}).catch(function(s){
			console.log("失败~~",s)
			s3 = new Promise((resolve,reject) =>{
				resolve("ss")
		});
				return s3;
			})
/*控制台返回 :
				解决~~ ok
				++++++++++++++
  • resolve,reject 可以在设置状态的同时 传递1个数据(最多1个数据)给 then / catch
  • then和catch代码执行时间是在本轮事件结束后,才执行的代码;
    setTimeout()代码执行时间是本轮事件结束、下轮事件开始的时候。

3.Promise中resolve 和reject方法

  • Promise 创建对象的三种方式

  • 方法一:创建Promise最常用的方式

new Promise( (resolve ,reject) =>{})
  • 方法二:创建一个状态为fulfilled的Promise 对象
Promise.resolve();
  • 方法三:创建一个状态为rejected 的 Promise对象
Promise.reject();

代码示例:

		let p = Promise.resolve("ok")
			p.then(res =>{
				console.log(res)
			})
			
			let p2 = Promise.reject("error");
				p2.catch(error =>{
				console.log(error)
				})
			//thenable 对象
			/**
			 * thenable 对象 指的是对象中, 有一个then对象
			 */
			let obj = {
				name:"zhangsan",
				then(s){
					console.log(this.name)
				}
			}

			let p3 = Promise.resolve(obj);

总结

今天简要介绍到这里,希望对读者有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值