首页 > 解决方案 > 重构nodejs进行维护的问题

问题描述

所以下面的代码是功能性的,只是一个具有不同规格的函数,但我有点怀疑,我相信它看起来特别丑陋的回调,它真的需要重构,关于如何重构它的任何想法是可维护和克服的缺陷?

await rps_id.map((rp_id) => {
                return new Promise((resolve, reject) => {
                    Part.Model.updateOne({
                            _id: rp_id
                        }, {
                            invoiceId: invoice._id
                        }).then(function(result) {
                            return resolve();
                        })
                        .catch(() => {
                            reject();
                        });
                });
            });

这是其余的代码:https ://codepen.io/0xf10yd/pen/PopRWpz

非常感谢您的帮助,在此先感谢

标签: javascriptnode.jsrefactoring

解决方案


您已经使用了await,所以我建议更改所有代码以使用 async/await 来保持一致性。

箭头函数内返回的 Promise 实际上没有任何作用。您在 a 内解析.then并在 a 内拒绝.catch。因此,除非对响应或抛出的错误进行了一些额外的处理,否则返回的 Promise 是多余的。

由于Part.Model.updateOne已经返回了一个承诺(因为你正在使用.then它),我猜你可能会像这样修剪它:

await rps_id.map((rp_id) => Part.Model.updateOne({
            _id: rp_id
        }, {
            invoiced: invoice._id
        });

我真的不能测试这个,但它应该像你的代码一样工作。


推荐阅读