then函数会接收到两个回调函数,一个是onFulfilled函数,一个是onRejected函数。如果两个回调函数都不写返回值,默认会返回undefined;进入下一个函数的onFulfilled函数constp=newPromise((resolve,reject)=>{resolve(22);});p.then((success1)=>{console.log("success1",success1);//"success2"22//不写return默认返回undefined},(err1)=>{console.log("err1",err1);}).then((success2)=>{console.log("success2",success2);//"success2"undefined},(err2)=>{console.log("err2",err2);});这两个回调中returnxxx,相当于调用了returnnewPromise((resolve)=>resolve(xxx));constp=newPromise((resolve,reject)=>{resolve(22);});p.then((success1)=>{returnnewPromise((resolve,reject)=>resolve("success"));//等同于return"success";},(err1)=>{console.log("err1",err1);}).then((success2)=>{console.log("success2",success2);//"success2""success"},(err2)=>{console.log("err2",err2);});onFulfilled函数和onRejected函数默认都返回成功,如果你需要返回失败,你需要调用reject或使用throw来抛出错误。constp=newPromise((resolve,reject)=>{resolve(22);});p.then((success1)=>{returnnewPromise((resolve,reject)=>reject("error"));//等价于//throw"error";},(err1)=>{console.log("err1",err1);}).then((success2)=>{console.log("success2",success2);},(err2)=>{console.log("err2",err2);//"err2"错误});总结:在then回调中的returnxxx会自动封装为returnnewPromise((resolve)=>resolve(xxx));,catchcatch用于处理rejected状态,是then函数的特例,等价于then(null,(err)=>{});为什么catch能捕捉到之前的错误,在onRejected函数中,如果没有抛出错误,默认返回undefined;进入下一个onFulfilledfunctionfinallyfinally无论当前promise的状态如何都会被执行,它也是一个then函数`then(result=>result,err=>newPromsie((\_,reject)=>reject(err)));Promise.resolvePromise.resolve是Promiseinfulfilled状态的简写,等价于newPromise(resolve=>resolve(xxx))onFulfilled函数接收参数。当参数为普通参数时,会直接传给后面的then函数newPromise((resolve)=>resolve({name:"uccs"})).then((data)=>{console.log(数据);});当参数为Promise对象时,后续的then会根据传入的Promise对象的状态变化执行哪个回调constp=newPromise((resolve,reject)=>{setTimeout(resolve,1000,"Iexecuted");});newPromise((resolve)=>resolve(p)).then((data)=>{console.log(data);});对象和then方法这样,如果需要改变Promise状态,就不能使用return形式。这个then方法还有两个回调函数:onFulfilled和onRejectedconstthenable={then(resolve,reject){console.log("thenable");},};newPromise((resolve)=>resolve(thenable))。then((data)=>{console.log(data);});Promise.rejectPromise.reject是Promiseinrejectedstate的简写,相当于newPromise((_,reject)=>reject(xxx))onRejected函数无论接收到什么参数,都会发送后面传递,作为后续方法的参数
