- 首先介绍一下Promise,ES2015正式发布Es6,其中的promis被列为正式规范。作为Es6中最重要的特性之一。
- Promise 的概念:
Promise 对象用于表示一个异步操作的最终完成 (或失败)及其结果值。
是骡子是马拉console.dir(Promise)出来看看
注:console.dir()可以显示一个对象所有的属性和方法。
ƒ Promise()
all: ƒ all()
allSettled: ƒ allSettled()
any: ƒ any()
arguments: (...)
caller: (...)
length: 1
name: "Promise"
prototype: Promise {Symbol(Symbol.toStringTag): "Promise", constructor: ƒ, then: ƒ, catch: ƒ, finally: ƒ}
race: ƒ race()
reject: ƒ reject()
resolve: ƒ resolve()
Symbol(Symbol.species): (...)
get Symbol(Symbol.species): ƒ [Symbol.species]()
__proto__: ƒ ()
[[Scopes]]: Scopes[0]
- 我们可以看到 Promise 是一个构造函数 对吧,看到这里我们是不是都很熟悉,原型上挂在的方法,reject,resolve,then,catch,finally 等等…
1. 废话不多说了,关子也不卖了,我们开始看他的之处
起步 new 一个 Promise 玩玩吧!
let prom = new Promise((resolve, reject) => {
setTimeout(function () {
console.log('你是个大麻瓜');
resolve('你成功输出大麻瓜')
},0)
})
console.log(prom);
// 输出结果如下
Promise {<pending>}
__proto__: Promise
catch: ƒ catch()
constructor: ƒ Promise()
finally: ƒ finally()
then: ƒ then()
Symbol(Symbol.toStringTag): "Promise"
__proto__: Object
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: "你成功输出大麻瓜
你是个大麻瓜
//操作过程
在上面的代码中,我们执行了一个异步操作,也就是setTimeout,输出“执行完成”,并且调用resolve方法。
// 概念
Promise的构造函数接收一个参数,是函数,并且传入两个参数:resolve,reject,
分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。
其实这里用“成功”和“失败”来描述并不准确,按照标准来讲,resolve是将Promise的状态置为fullfiled,
reject是将Promise的状态置为rejected
写着写着就饿了,晚上吃过饭再写!