我和 1 .then()
有一个 promise 我想将其分成较小的部分(因为它太长了......)。
它看起来类似于这个(简化的)示例:
const myPromise = new Promise((resolve, reject) => {
setTimeout(function() {
resolve(false);
}, 500);
});
myPromise
.then(value => {
if (value) {
// do something
console.log('value: ' + value)
console.log('do something');
} else {
// do something else only if value=true
// this is really long.............
console.log('value: ' + value)
console.log('do something else');
}
});
为了简化我想做这样的事情:
const myPromise = new Promise((resolve, reject) => {
setTimeout(function() {
resolve(false);
}, 500);
});
myPromise
.then(value => {
if (value) {
// do something
console.log('value: ' + value)
console.log('do something');
// stop "then" execution (next "then" should not run) -> HOW TO DO THIS?
} else {
// continue processing in next then
return value
}
})
.then(value => {
// do something else only if value=false
console.log('value: ' + value)
console.log('do something else');
})
我不知道如何获得 // stop "then" execution (next "then" should not run) -> HOW TO DO THIS?
去工作...
最佳答案
您可以通过返回拒绝 promise 来“停止”then
链,这就是为什么它会“跳转”到catch
阶段。
const myPromise = new Promise((resolve, reject) => {
setTimeout(function() {
resolve(true);
}, 500);
});
myPromise
.then(value => {
if (value) {
// do something
console.log('value: ' + value);
console.log('do something');
// stop "then" execution (next "then" should not run) -> HOW TO DO THIS?
return Promise.reject();
} else {
// continue processing in next then
return value;
}
})
.then(value => {
// do something else only if value=false
console.log('value: ' + value);
console.log('do something else');
});
关于javascript - js Promise - 如果条件满足,如何结束 "then"执行,如果不满足则继续下一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59089513/