ES6----Promise(部分)

Promise

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

   Promise是一个对象,它从可以获取异步操作的消息。Promise提供统一的API,各种异步操作可以用的方法进行处理。

  Promise对象有以下两个特点:

  1.对象的状态不受外界影响。promise对象代表一个异步操作,有三种状态:pending(进行中),fulfilled(已成功)和rejected(已失败)。

  2,一旦状态改变,就不会再变,任何时候都可以得到这个结果。

  好处:有了promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,promise对象提供统一的接口,使得控制异步操作更加容易。

  缺点:无法取消promise,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,promise内部抛出的错误,不会反应到外部。第三,当处于pending状态时,无法得知目前进展到哪个阶段。

  

  Promise.prototype.then()

  then方法返回的是一个新的Promise实例,因此可以采用链式写法,即then方法后面再调用另一个then方法。  

getJSON("/posts.json").then(function(json) {
  return json.post;
}).then(function(post) {
  // ...
});

  采用链式的then,可以指定一组按照次序调用的回调函数。这时,前一个回调函数,有可能返回的还是一个Promise对象(即有异步操作),这时后一个回调函数,就会等待该Promise对象的状态发生变化,才会被调用。

  Promise.prototype.catch

  promise抛出一个错误,就被catch()方法指定的回调函数捕获。

const promise = new Promise(function(resolve, reject) {
  throw new Error('test');
});
promise.catch(function(error) {
  console.log(error);
});

  

  Promise.prototype.finally()

  finally()方法用于指定不管promise对象最后状态如何,都会执行的操作。

promise
.then(result => {···})
.catch(error => {···})
.finally(() => {···});

  上面代码中,不管promise最后的状态,在执行完thencatch指定的回调函数以后,都会执行finally方法指定的回调函数。

  

  Promise.all()

  Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。

  

集思广益,仅供学习,侵权即删!!
原文地址:https://www.cnblogs.com/hudunyu/p/13434231.html