主要介绍Promise新特性的概念和使用。
概念:
Promise是ES6引入的异步编程的新解决方案,语法上Promise是一个构造函数,用来封装异步操作(也就是回调函数)。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Promise学习</title> </head> <body> <script> const p = new Promise(function(resolve,reject){ //创建一个Promise实例对象,传入一个函数,函数由两个参数,分别是 //1. resolve:也是一个函数对象,调用这个说明成功。 //2. reject:也是一个函数对象,调用这个说明失败。 //3. 或者throw抛出异常会判定为失败 //4. 不执行resolve并且不执行reject,返回一个非Promise实例,也是成功。 //先试试成功 resolve("我成功啦"); //再试试失败 //reject("我失败啦"); }).then( //then方法设置成功和失败的回调函数,第一个函数是成功,第二个函数的失败 function(value){ // console.log("成功:",value); }, function(reason){ console.log("失败:",reason); } ) </script> </body> </html>
再注释掉resolve方法,调用reject方法。
效果:
then方法用于设置成功回调和失败回调,该方法的返回值是也是一个Promise实例,所以可以直接链式调用then,达到一条回调链。
效果:
验证返回Promise,并在该实例中实现成功。
效果:
验证返回Promise并使得失败:
效果:
promise由一个catch方法,是一个语法糖,当then函数不想设置成功回调,只想设置失败回调时,还是需要传递一个成功回调函数,尽管里面时空函数,第二个函数才是失败回调,这种情况下then就略显麻烦,此时可以不使用then,直接使用catch,传入一个回调函数,这个就是失败回调。