首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打破承诺链的好方法是什么?

打破承诺链的好方法是什么?
EN

Stack Overflow用户
提问于 2016-05-18 10:27:35
回答 1查看 70关注 0票数 0

我想知道如何才能在JS中正确地打破承诺链。

在这段代码中,我首先连接到数据库,然后检查集合是否已经有一些数据,如果没有添加它们。不要注意一些actionhero.js,code..it在这里并不重要。

主要问题是:使用抛出null来打破链行吗?

代码语言:javascript
复制
mongoose.connect(api.config.mongo.connectionURL, {})
        .then(() => {
            return api.mongo.City.count();
        })
        .then(count => {
            if (count !== 0) {
                console.log(`Amout of cities is ${count}`);
                throw null; // break from chain method. Is it okay ?
            }
            return api.mongo.City.addCities(api.config.mongo.dataPath + '/cities.json');
        })
        .then(cities => {
            console.log("Cities has been added");
            console.log(cities);
            next();
        })
        .catch(err => {
            next(err);
        })

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-05-19 19:37:36

尽管它看起来像是一个聪明的技巧,并且会像您预期的那样起作用,我还是建议不要抛出无错误的对象。

如果您抛出一个实际的错误并显式地处理它,对于其他维护此代码的开发人员来说,这将是更可预测的。

代码语言:javascript
复制
Promise
  .resolve()
  .then(() => {
    throw new Error('Already in database');
  })
  .catch(err => {
    if (err.message === 'Already in database') {
      // do nothing
    } else {
      next(err);
    }
  });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37296877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档