var p = new Promise((resolve, reject) => { setTimeout(() => { resolve(111); }, 1000); }); p.then(result => { console.log(result); return result; }).then(result => { console.log(result); }).catch(error => { console.log(error); })
知识点:
- Promise链式调用时,上一层必须return结果下一层才会接收到,否则是undefined;
- Promise链式调用时,如果只在最后加了catch函数,那么Promise链中的任意一层有错误都会触发catch函数;
- 如果Promise没有catch函数的话,或者第二个回调函数接收错误的话,Promise的错误将会直接抛出;
- 如果想要单独处理Promise链中的每一层的错误时,直接在then后的回调函数后再写一个函数即可接收到错误,这种写法不影响后面的链式调用;
var p = new Promise((resolve, reject) => { setTimeout(() => { reject(111); }, 1000); }); p.then(result => { console.log(result); return result; }, error => { console.log(error); return 2222; })