javascript - js Promise - 如果条件满足,如何结束 "then"执行,如果不满足则继续下一步

标签 javascript promise es6-promise

我和 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/

相关文章:

javascript - 与 Bootstrap 配对时 Google Maps API 未初始化

Javascript promise .catch仍然调用final变量.then

javascript - 用于确定 JavaScript 对象中属性值的异步函数

javascript - 使用 Promise.all 在 Google map 上放置标记 - 对象作为 React 子对象无效(发现 : [object Promise])

JavaScript 日期 + 1

javascript - Firebase 实时数据库 - "Error: Client is offline"。 react /NextJS

javascript - 如何在parse.com的异步方法中使用for循环

javascript - Mocha 测试expressjs 4,监视 promise 中调用的函数,测试默默失败

javascript - Promise.all 的奇怪行为

javascript - 坚决 promise 并拒绝作为属性(property),这是一种反模式吗?为什么?