承诺连锁似乎不会继续

我试图让我的承诺链在我的快递员工作,但似乎无法弄清楚为什么它不会工作,即使我以前这样做。

我添加了许多日志来跟踪停止,并且在validationparsing后似乎停止,不会继续

诺言:

router.post('/auth/token', function (req, res) { var schema = require('./schema/token.js'); var data = { username: req.body.username, password: req.body.password }; new Promise(function (resolve, reject) { logger.info(`Validating request..`); return validator.validate(schema, data); }).then(function () { logger.info(`Getting token..`); return authentication.getToken(data.username, data.password); }).then(function (result) { logger.info(`Received token..`); res.send(result); }).catch(function (err) { logger.info(`Unable to receive token..`); res.send(err); }) }) 

Validator.js:

 module.exports.validate = function (schema, data) { return new Promise(function(resolve, reject){ logger.info(`Loading schema..`); if (!schema) { logger.info(`Missing schema, rejecting promise..`); return reject(new Error('Missing schema')); } const ajv = new Ajv({ v5: true, allErrors: true }); logger.info(`Compling schema..`); const validate = ajv.compile(schema); logger.info(`Validating schema..`); const valid = validate(data); if (!valid) { const errors = validate.errors.map((error) => `${error.dataPath.replace('.', '')}: ${error.message}`); const err = new Error(errors); return reject(err); } logger.info(`Valid schema.. resolving..`); return resolve(); }) } 

当我运行这个..日志说:

 info: Validating request.. info: Loading schema.. info: Compling schema.. info: Validating schema.. info: Valid schema.. resolving.. 

不再继续,它应该继续下一个承诺,现在如果我改变了第一个承诺,并强制一个决心和拒绝,它会工作,但据我所知,这不应该是必要的,因为validation返回一个承诺,我没有得到任何错误

有任何想法吗?

不要创造新的承诺, 使用 validate承诺; 请参阅下面的***

 router.post('/auth/token', function (req, res) { var schema = require('./schema/token.js'); var data = { username: req.body.username, password: req.body.password }; logger.info(`Validating request..`); // *** validator.validate(schema, data) // *** .then(function () { logger.info(`Getting token..`); return authentication.getToken(data.username, data.password); }).then(function (result) { logger.info(`Received token..`); res.send(result); }).catch(function (err) { logger.info(`Unable to receive token..`); res.send(err); }) }) 

问题是你永远不能解决你创造的新的承诺。 但是,既然没有足够的理由去创造一个新的承诺,那么解决scheme就是使用你所拥有的承诺。