什么是promise?
具有then方法的对象即是promise
let p
p = {
then: function(resolve, reject) {
// resolve(1) // 只能有一种状态,一旦确定不可更改
reject(1)
}
}
then方法的两个函数,success,fail
p = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('success')
// reject('fail')
}, 500);
})
Promise.resolve(p)
.then(r => {
console.log('data')
console.log(r)
}, e => {
console.log('err')
console.log(e)
})
获取异步错误, try-catch只能获取同步错误
分离回调:所有的promise最后都加上catch,如果没有传入处理函数,错误会被吞掉.这样导致不会报错,即出错很难,但可能是个坑.这是错误处理思想从结果最坏到结果最好情况的转变.
以往的错误处理,比如nodeJs中的回调设计err-first
,缺点:多级回调会形成回调地狱.
cb(err,data) {
if(err) return false
// 成功,处理data
}
promise.catch是then的第二个函数
p = {
then: function(resolve, reject) {
resolve('success')
// reject('fail')
}
}
Promise.resolve(p)
.then(r => {
console.log('res')
console.log(r)
})
.catch(e => {
console.log('catch err')
console.log(e)
})