new Promise(回调函数(两个参数)) 回调函数是promise执行之后才会执行里面的两个参数
new Promise 被创建之后就会被立即执行



注意:上面是错误的写法 哈哈
var pro = new Promise((resolve,reject)=>{
setTimeout(()=>{
// console.log('执行成功!');
// resolve和reject 只会执行一个 就break
// resolve('执行成功!');
reject('执行失败!');
},2000)
})
//promise执行完成 会把 ‘执行成功’放进then()里作为参数
pro.then(value =>{
console.log('resolve异步处理执行完成')
console.log(value)
})
pro.catch(value =>{
console.log('reject异步处理执行完成')
console.log(value)
})


//成功
new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log('该prormise已被访问');
resolve(1);
})
}).then(res=>{
console.log(res)
return res + 10//res + 10传到下一个then
}).then(res =>{
console.log(res)
return new Promise(resolve=>resolve(res + 20))
}).then(res=>{
console.log(res)//最终输出
}).catch(error =>{
console.log(error)
})

// 拒绝
new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(1);
})
}).then(res=>{
console.log(res)
// throw 'then1异常'
return res + 10//res + 10传到下一个then
}).then(res =>{
console.log(res)
throw 'then2异常'
return new Promise(resolve=>resolve(res + 20))
}).then(res=>{
console.log(res)//最终输出
}).catch(error =>{
console.log(error)
})
多个promise 同时执行
var p1 = new Promise(resolve =>{
setTimeout(()=>{
resolve(1)
},1000)
})
var p2 = new Promise(resolve =>{
setTimeout(()=>{
resolve(2)
},2000)
})
var p3 = new Promise(resolve =>{
setTimeout(()=>{
resolve(3)
},500)
})
var p4 = new Promise(resolve =>{
setTimeout(()=>{
resolve(4)
},300)
})
var p5 = new Promise(resolve =>{
setTimeout(()=>{
resolve(5)
},6000)
})
Promise.all([p1,p2,p3,p4,p5]).then(values=>console.log(values))//[1, 2, 3, 4, 5]
Promise.all([p2,p5,p1,p4,p3]).then(values=>console.log(values))// [2, 5, 1, 4, 3]
```
等了6s
按顺序输出

还可以捕获异常
