ES6新增Promise构造函数

文章目录

有关ES6中Promise的理解

1.Promise的含义?

  • Promise的初衷是:Promise对象能使我们更合理、更规范地进行处理异步操作
  • Promise是:(英文翻译: 承诺) 是 JS 为 异步编程提供的解决方案、主要用来解决回调地域问题。也是一个容器,里面 存放的是 将来才会结束的 事件(异步请求) 。

2.如何创建一个Promise对像?

  • 1.new Promise(function(resolve, reject) {})
    回调函数 有 2个参数 , 分别代表 resolve (解决) , reject (拒绝), 并且都是函数
  • 2.Promise.resolve();
    创建一个 状态为 fulfilled 的Promise 对象
  • Promise.reject();
    创建一个 状态为 rejected 的 Promise对象
let p = Promise.resolve("ok")
p.then( res => {
	console.log(res)
})
let p2 = Promise.reject("error");
p2.catch( error => {
	console.log(error)
})

注:1.调用 resolve 函数, 代表 Promise的状态 会从 pending --> fulfilled
2.调用 reject 函数 , 代表 promise的状态 会从 Pending --> rejected
3.resolve, reject 可以在设置状态的同时 可以传递 1 个数据(最多一个数据),给 then / catch

3.Promise对像的三种状态?

  • Pending(进行中)
  • Fulfilled (已成功)
  • rejected (已失败)
    注:Promise 对象的三种状态,不受外界的影响,只有 Promise中存放的 将来会结束的事件 才会影响
    Promise 状态 一旦改变、不可逆、
    Pendding ====> Fulfilled
    Pendding ====> rejected
let promise = new Promise(function(resolve, reject) {
	resolve("ok") ;
});
promise.then(function(s) {
	console.log("事情已被解决~~~", s)
})
/**
 * 输出结果为:
 事情已被解决~~~  ok
 */

4.thenable 对象是什么?

  • thenable 对象 指的是 对象中, 有一个 then 对象
let obj = {
	name: 'zhangsan',
	then(s) {
		console.log(this.name)
	}
}
let p3 = Promise.resolve(obj);

5.有关Promise的小例子?

// 预测 3秒后,天空会下起小雨
			
			function timeout(minseconds) {
				return new Promise((resolve, reject) => {
					// 延迟 用来 模拟异步
					setTimeout(function() {
						// 生成一个0 - 1随机数
						let num = Math.random(); 
						
						if (num >= 0.3) {
							// 设置 Promise状态为 fulfilled
							resolve()
						}else{
							reject()
						}
					}, minseconds)
					
				})
			}
			
			// 预测3秒后,下雨、5秒后下雪, 如果都发生了,打印 天气真糟糕,否则 打印 天气还行
			timeout(100).then(() => {
				console.log("下雨了");
				return timeout(100);
			}).then(()=> {
				console.log("下雪了")
				console.log("天气真糟糕")
			}).catch(() => {
				console.log("天气还行")
			})
			

今日分享希望对大家有所帮助

上一篇:promise


下一篇:关于 Ant框架中 <a-upload> beforeUpload 获取图片的宽高以及返回false 还能上传的问题