NodeJS基础2---2 Promise详解

1、ES6的Promise语言标准、Promise/A+规范

一、Promise是Js针对异步场景的解决方案。

Promise是一个对象,同时是一种规范,针对异步操做约定统一接口,表示一个异步操做的最终结果,以同步方式写代码,执行的操做是异步的,保证程序的执行顺序是同步的。javascript

二、Promise对象的三种状态

  1. 未完成(pending)
  2. 已完成(fulfilled)
  3.    失败(rejected)

三种状态变化只能由  未完成----失败  或  未完成----已完成java

三、Promise/A+规范

PromiseA与A+不一样点es6

  1. A+规范经过术语thenable 来去区分promise对象,当一个对象拥有 then()函数时,这对象就被认为是一个promise
  2. A+定义onFulfilled/onRejected必须做为函数来调用,并且调用过程必须是异步的,成功、失败返回promise的处理过程,必须做为函数来调用,而且处理过程是异步的。
  3. A+严格定义then方法链式调用时onFulfilled(成功)/onRejeced(失败)的调用顺序。

 

2、如何使用

经过promise对象的 then()方法把流程里面依次执行的异步操做,也就是回调函数,如今直接传递给Promise对象的then()方法。promise

Promise then方法

  1. then方法返回一个promise对象
  2. then方法接受两个·参数,成功时的回调函数,失败时的回调函数。
  3. 成功时的回调函数,参数为上一个promise的值
  4. 失败回调函数参数为失败缘由
promiseObj.then( onFulfilled , onRejected)

onFulfilled = function(value){

    return promiseObj2

}

onRejected = function(err){}

执行原理:

Promise会保证 then方法执行的顺序,第一个Promise完成时,后面链式调动的then方法,参数里的回调函数会依次调用,同时这些回调函数不是在执行 then()方法时马上执行,而是必须等待前面Promise完成后才能执行。异步

Promise特色

回调函数能够写成规范的链式写法,程序流程很清楚,一整套流程能够实现为多个异步操做,部署一个回调函数,或为多个回调函数中抛出的错误,统一指定一个方法。函数

promiseAnimate(ball1,100)
	.then(function(){
		return promiseAnimate(ball2 ,200)
	})
	.then(function(){
		return promiseAnimate(ball3 ,300)
	})
	.then(function(){
		return promiseAnimate(ball3 ,150)
	})
	.then(function(){
		return promiseAnimate(ball2 ,150)
	})
	.then(function(){
		return PromiseAnimate(ball1 ,150)
	})

 

Promise库

  • bluebird
  • Q
  • then.js
  • es6-promise
  • ypromise
  • saync
  • native-promise-only
     

bluebird既兼容Promise类库,又扩展了取消promise对象的运行,取的Promise的运行进度,以及错误处理的扩展监测。spa

相关文章
相关标签/搜索