老师,有些是我自己添加的注释,是对then方法的理解,不知道对不对,请老师指教,谢谢
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>then方法</title> </head> <body> <script> // 1.什么时候执行 // ppending->fulfilled时,执行then的第一个回调函数 // ppending->rejected时,执行then的第二个回调函数 // // 2.执行后的返回值 // // then方法执行后返回一个新的Promise对象 // // 用的是回调函数,回调函数里面含有两个参数 // // resolve或reject调用决定p的状态 // const p=new Promise((resolve,reject)=>{ // resolve(); // }); // // 有了状态后,p调用then方法 // // 可以给p重新定义一个变量p2 // const p2=p.then( // // 成功状态,调用第一个回调 // ()=>{}, // // 失败状态,调用第二个回调 // ()=>{} // ).then().then(); // console.log(p,p2,p===p2) //Promise {<fulfilled>: undefined} Promise {<pending>} false //3.then方法返回的Promise对象的状态改变 const p=new Promise((resolve,reject)=>{ // resolve(); reject(); }); // 有了状态后,p调用then方法 // 判断then方法中回调了哪个函数 // 第一个then是由p打点调用的;第二个then是const p2=p.then(),也就是p.then()返回新的调用对象p2调用的第二个then //哪个状态执行了,就考虑是哪个调用并执行了 // 为改变第二个then调用的状态,可以在回调函数中加上return p.then( // 成功状态,调用第一个回调 ()=>{ console.log('success'); }, // 失败状态,调用第二个回调 ()=>{ console.log('err'); // 在then的回调函数中,return后面的东西,会用Promise包装一下 // return undefined; // 等价于 // return new Promise((resolve,reject)=>{ // // 默认是resolve,所以可以省略reject的书写 // resolve(undefined); // }); // 用return进行传入参数 // return 123; // 等价于 // return new Promise(resolve=>{ // resolve(123); // }); // 默认返回的永远都是成功状态的Promise对象 // 入股想要返回失败状态的Promise对象,可以自己重新写 return new Promise((resolve,reject)=>{ reject('reason') }) } ).then( (data)=>{ console.log('success2',data); }, err=>{ console.log('err2',err); } ).then(data=>{ console.log('success3',data); // 返回参数 return undefined; // 等价于 // return new Promise(resolve=>{ // resolve(undefined); // }) },err=>{ console.log('err3',err) }); // 总结:then()可以连续打点调用;then()内部的状态取向与返回参数是由打点的Promise对象决定的; </script> </body> </html>
7
收起
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星