gpt4 book ai didi

javascript - 打破 promise 链的好方法是什么?

转载 作者:行者123 更新时间:2023-12-02 14:37:37 27 4
gpt4 key购买 nike

我想知道如何正确地打破 JS 中的 promise 链。

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

主要问题是:可以使用 throw null 来断链吗?

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);
})

非常感谢!

最佳答案

尽管这看起来像是一个聪明的技巧并且会像您期望的那样工作,但我建议不要抛出非错误对象。

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

Promise
.resolve()
.then(() => {
throw new Error('Already in database');
})
.catch(err => {
if (err.message === 'Already in database') {
// do nothing
} else {
next(err);
}
});

关于javascript - 打破 promise 链的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37296877/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com