HuangHongRui / huanghongrui.github.io

:poultry_leg: MyBlog | Keep track of every moment.. :icecream:
http://blog.luckyman.xyz/
3 stars 1 forks source link

Promise #7

Open HuangHongRui opened 6 years ago

HuangHongRui commented 6 years ago

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。

Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。

Promise对象有以下两个特点。

缺点:

Promise 实例具有then方法,也就是说,then方法是定义在原型对象Promise.prototype上的。

作用:是为 Promise 实例添加状态改变时的回调函数。(then方法的第一个参数是resolved状态的回调函数,第二个参数(可选)是rejected状态的回调函数。)

then方法返回的是一个新的Promise实例(注意,不是原来那个Promise实例)。 因此可以采用链式写法,即then方法后面再调用另一个then方法。

Promise.all方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。 Promise.race方法同样是将多个Promise实例,包装成一个新的Promise实例。

用法:

Promise对象是一个构造函数,用来生成Promise实例。

Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve方法和reject方法。

如果异步操作成功,则用resolve方法将Promise对象的状态变为“成功”(即从pending变为resolved);

如果异步操作失败,则用reject方法将状态变为“失败”(即从pending变为rejected)。

promise实例生成以后,可以用then方法分别指定resolve方法和reject方法的回调函数。