SOURCE

let p = new Promise((resolve, reject)=>{
    setTimeout(_=>{
        resolve(200)
        // console.log('resolve后继续..')
    }, 1000)
    //reject的本质是把状态改成rejected,并抛出一个错误
    reject('rejected')
   
})

p.catch(err=>{
    console.log('catch ERR 1: '+ err)
})
p.catch(err=>{
    console.log('catch ERR 2: '+ err)
}).catch(err=>{
    //此时.catch的调用者是成功的promise, 故不会执行此处的代码
    console.log('catch ERR ?: '+ err)
})
p.then(data=>{
    console.log(data)
}).catch(err=>{
    console.log('catch ERR 3: '+ err)
})
// 如果被error被处理过,不应该再经过第二个catch


// p.then(data=>{
//     console.log('second:'+data)
// },err=>{
//     console.log('catch ERR 2')
// })

// let p1 = new Promise(function(resolve) {
//   setTimeout(() => {
//     resolve("fulfilled 1");
//   }, 2000);
// });
// let p2 = new Promise(function(resolve, reject) {
//   setTimeout(() => {
//     reject("reject 2");
//   }, 1000);
// });
// Promise.all([p1, p2]).catch(function (reason) {
//   console.log(reason);      //打印: ["fulfilled 1","fulfilled 2"]
// });
console 命令行工具 X clear

                    
>
console