这是一个JavaScript代码,其中包含两个诺言。我想知道为什么在运行代码时没有找到catch块。
function getPromiseResolve(){
return new Promise(function(resolve, reject){
resolve('promise resolved')
})
}
function getPromiseRejected(){
return new Promise(function(resolve, reject){
reject('promise rejected')
})
}
getPromiseResolve()
.then(function(res){
getPromiseRejected()
})
.then(function(res){
console.log('response is ', res);
})
.catch(function(error){
console.log('error is ', error);
})
答案 0 :(得分:2)
您必须返回Promise.reject
,catch
才能处理它。
来自MDN:
Promise.reject(reason)方法返回一个由于给定原因而被拒绝的Promise对象。
Promise.resolve('good')
.then(function(res){
return Promise.reject('bad')
})
.catch(function(error){
console.log('error is ', error);
})
function getPromiseResolve(){
return new Promise(function(resolve, reject){
resolve('promise resolved')
})
}
function getPromiseRejected(){
return new Promise(function(resolve, reject){
reject('promise rejected')
})
}
getPromiseResolve()
.then(function(res){
return getPromiseRejected() // LOOK HERE
})
.then(function(res){
console.log('response is ', res);
})
.catch(function(error){
console.log('error is ', error);
})
答案 1 :(得分:-1)
Promise.resolve('good')
.then(function(res){
return Promise.reject('bad')
})
.catch(function(error){
console.log('error is ', error);
})
// OR
Promise.resolve('good')
.then(function(res){
throw new Error('bad')
})
.catch(function(error){
console.log('error is ', error.message);
})