Promise
- 概念
Promise是异步编程的一种解决方案,比传统的解决方案(回调函数和事件)更合理更强大,能优雅解决回调地狱难题。
所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件的结果。
Promise对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成)和Rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。
- 基本用法
Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。
resolve将Promise对象的状态从从Pending变为Resolved,在异步操作成功时调用,并将异步操作的结果,作为参数传递出去。
reject函数的作用是,在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
Promise实例生成以后,可以用then方法分别制定Resolved状态和Rejected状态的回调函数。
|
|
Promise新建后会立即执行
|
|
上面代码中,new Promise后立即执行,先输出的是promise,then方法的回调函数将在当前脚本所有同步任务执行完才会执行,所以resolve最后输出。
- 多任务并行处理
当多个异步任务没有依赖关系,且要等多个异步任务全部返回后才执行相应的回调函数,Promise也可以优雅的解决 。
|
|