声明一个promise对象
new Promise(function(resolve, reject){ })
.then捕获resolve的内容
.catch捕获reject的内容
例1:
成功的回调
new Promise(function(resolve, reject) {
resolve('success') // 成功执行
}).then(result => {
alert(result) // 弹出提示框,内容为success
})
例2:
失败的回调
new Promise(function(resolve, reject) {
reject('fail') // 执行失败
}).then(result => {
alert(result)
}).catch(error => {
alert(error)
})
如果想终止在某个执行链的位置,可以用Promise.reject(new Error())
在.then 内通过返回 Promise.reject(new Error()) 抛出错误,来让catch捕获,那么后面的所有.then都不会执行了
new Promise(function(resolve, reject) {
resolve(1)
}).then(result => {
return result + 1
}).then(result => {
return result + 1
}).then(result => {
return Promise.reject(new Error(result + '失败'))
// return result + 1
}).then(result => {
return result + 1
}).catch(error => {
alert(error)
})
异步编程的终极方案 使用async/await
1.await 表示强制等待的意思,await关键字的后面要跟一个promise对象,它总是等到该promise对象resolve成功之后执行,并且会返回resolve的结果
2.async 和 await必须成对出现
原因:由于await的强制等待,所以必须要求使用**await**的函数必须使用**async**标记, async表示该函数就是一个异步函数,不会阻塞其他执行逻辑的执行
3. promise可以通过catch捕获,async/ await捕获异常要通过 try/catch
await不会返回reject的结果,必须通过try{ 可能出现异常的异步代码 } catch(error){ 当代码出现异常时,捕获异常,并且在此执行异常处理}