关于Promise的then调用一些问题

tech2025-07-12  1

let p = new Promise((resolve, reject) => { resolve(); }); //执行的结果时 succeed let p4 = p.then(() => { console.log('succeed'); return p4; }, () => { }).then(() => { console.log(111); }, () => { console.log(222); });

他的执行结果就是cucceed,执行完成后就不会在执行下一个then, 分析: p4是p.then(),then()的返回值,在第一次then()的返回值就是p4,他根本就拿不到两次then()的返回值,所以就不会走第二次then

let p = new Promise((resolve, reject) => { resolve(); }); //执行的结果时 succeed let p4 = p.then(() => { console.log('succeed'); return p4; }, () => { }); p4.then(()=>{ consolo.log(111); },(err)=>{ consolo.log('err',err); });

这里的这个歌就可以拿到原理是 p4就是一次then 执行结果: succeed err [TypeError: Chaining cycle detected for promise #]

如果想要执行成功采用下面方式(其中的一种方式)

let p = new Promise((resolve, reject) => { resolve(); }); //执行的结果时 succeed let p4 = p.then(() => { setTimeout(() => { console.log('succeed'); return p4; }); }, () => { }).then(() => { console.log('succeed2'); }, (err) => { console.log('err', err); });
最新回复(0)