function doSomething() {
return new Promise((resolve, reject) => {
var obj = {
boolean: true,
action: 'codeing'
}
console.log('-------------doSomething-------------')
resolve(obj)
})
}
function doSomethingElse() {
return new Promise((resolve, reject) => {
var obj = {
action: 'watching'
}
console.log('-----------------doSomethingElse-----------------')
resolve(obj)
})
}
function test() {
return new Promise((resolve, reject) => {
doSomething()
.then((obj1) => {
if (obj1.boolean) {
console.log(obj1)
return resolve(obj1)
}
return doSomethingElse()
})
.then((obj2) => {
console.log(obj2.action)
resolve(obj2)
})
.catch((err) => {
console.log(err)
reject(err)
})
})
}
test()
.then((result) => {
console.log(result)
})
.catch((err) => {
console.log('-----------------catch error-------------------')
console.log(err)
})
如上面这段代码所示,在return resolve(obj1)之后,仍然会执行后续的then,但是obj2的值为undefined,catch到错误之后,reject(err)似乎没有起到作用。
如何在return resolve(obj1)之后不去执行后面的代码,直接返回?