建议重复不足以作为答案。 link是更好的答案。并且匹配@deceze回复
我是从.net转换到节点。因此,我喜欢es6提供的语法糖。在我的一个复杂的重构中,我遇到了一个范围问题。
我从课堂内回复我的承诺。我将一些PolicyMapper.mapDao()
代码重构为另一个类函数(mapJSONtoDAO
)。单元测试没有问题。与其他承诺链接时出现问题。 this.mapJSONtoDAO()
变得不确定。
route.js - >
const policyService = new PolicyService();
const policyMapper = new PolicyMapper();
const policyMapPromise = policyService.getPolicy(req.body.policyNumber, office)
.then(policyMapper.mapDao, next);
PolicyMapper类 - >
class PolicyMapper {
mapDao(soapResponse) {
return new Promise((resolve, reject) => {
xml2js.parseString(soapResponse[config.responseProperty], {}, (error, json) => {
resolve(this.mapJSONtoDAO(json));
});
});
}
mapJSONtoDAO(json) {
let policyDAO = new PolicyDAO();
policyDAO.givenName = json["policy-response"]["given-name"]
return policyDAO;
}
}
route.js的下面重构保护了类和promise之间的范围关联。是否有一种简单的方法来补充这一点。我真的希望我的代码对于维护代码的任何工程师来说都很简单。
const policyService = new PolicyService();
const policyMapper = new PolicyMapper();
const policyMapPromise = policyService.getPolicy(req.body.policyNumber, office)
.then((soapResponse) => {
return policyMapper.mapDao(soapResponse)
}, next);