axios基于promis的API进行封装的 Promise主要解决了异步操作 回调函数的多层嵌套形成回调地狱的问题 、
Promise-概念及基本使用
返回的是Promise Promise原型Prototype里面有很多方法 .then .catch,rejevtd Promise是一个构造函数 p是实例化对象 return Promise实例化对象.then .then 会形成链式调用
Promise
可以用来解决上一节回调函数嵌套的问题,mdn查看如何使用它概念
<body> <h2>测试axios返回的是否是Promise</h2> <script src="./lib/axios.js"></script> <script> // axios基于promis的API进行封装的 // const p = axios({}).then(() => {}); // console.log(p); //返回的是Promise Promise原型Prototype里面有很多方法 .then .catch,rejevtd // 两种状态只能执行 一次 谁写上面谁先执行 // Promise是一个构造函数 p是实例化对象 return Promise实例化对象.then .then 会形成链式调用 const p = new Promise((resolve, reject) => { resolve(); //状态成功时执行.then回调函数 reject(); //状态失败时执行.catch回调函数 }); p.then(() => { console.log("成功了"); }).catch(() => { console.log("我失败了"); }); // 过一秒 参数传过去 ‘成功’ const p1 = new Promise((resolve, reject) => { // console.log("resolve是一个方法", resolve);//ƒ () { [native code] } setTimeout(() => { resolve("我成功了"); }, 1000); }).then((res) => { console.log("res是resolve成功时传过来的参数", res); }); </script> </body>Promise的链式调用
<body> <h2>链式调用</h2> <script src="./lib/axios.js"></script> <script> // resolve reject (形参) 名字可以改,但是建议别改 // 实例化对象可以调原型上的方法 可以进行链式调用 // Promise是一个构造函数 p是实例化对象 return Promise实例化对象.then .then 形成链式调用 const p = new Promise((resolve, reject) => { setTimeout(() => { resolve("我是1"); }, 1000); }) .then((res) => { console.log("1", res); return new Promise((resolve, reject) => { setTimeout(() => { resolve("我是2"); }, 2000); }); }) .then((res) => { console.log("2", res); return new Promise((resolve, reject) => { setTimeout(() => { resolve("我是3"); }, 3000); }); }) .then((res) => { console.log("3", res); }); </script> </body>
标签:调用,console,log,res,resolve,Promise,链式,Promies From: https://www.cnblogs.com/JAG2671169285/p/16944275.html