javascript - 我怎么能中止 JavaScript Promise?

标签 javascript node.js promise chaining

我在 NodeJS 项目上工作,我在我的代码中使用了 Promise 要链接一些方法,我需要在“thens”链之一中中止

findEmployeeByCW('11111', "18-09-2016").
then(function () {
    return findEmployeeByCWE('111111', "18-09-2016", '111111')
}, function () {
    console.log('createEmployeeLoginBy')
    createEmployeeLoginBy('111111', "18-09-2016", '111111').
    then(function (log) {
        SaveEmployeeLogToDb(log)
        // ***************
        // ^_^ I need to exit here ....
    })
})
.then(function (log) {
    return updateLoginTimeTo(log, '08-8668', '230993334')
}, function () {
    return createNewEmployeeLog('224314', "18-09-2016",
        '230993334', '08-99')
})
.then(SaveEmployeeLogToDb).then(DisplayLog).catch(function (e) {
    console.log(e);
})

最佳答案

如果我理解正确的话,这里没有必要取消或抛出。

你应该能够通过重新安排来达到你的目的:

findEmployeeByCW('11111', "18-09-2016")
.then(function() {
    return findEmployeeByCWE('111111', "18-09-2016", '111111')
    .then(function(log) {
        return updateLoginTimeTo(log, '08-8668', '230993334');
    }, function(e) {
        return createNewEmployeeLog('224314', "18-09-2016", '230993334', '08-99');
    });
}, function(e) {
    return createEmployeeLoginBy('111111', "18-09-2016", '111111');
})
.then(SaveEmployeeLogToDb)
.then(DisplayLog)
.catch(function(e) {
    console.log(e);
});

前提是 log 对象始终通过到达该点的所有可能路径传送到 SaveEmployeeLogToDb,如原始代码所暗示的那样。

关于javascript - 我怎么能中止 JavaScript Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39624712/

相关文章:

javascript - typescript 错误对象可能为空?为什么,如何禁用?

node.js - 错误 : SSL connect error on Insomnia when trying to make a localhost request

node.js - NodeJS : Node-Inspector blank screen

node.js - 为什么我的 Promise 在某些情况下返回数据库行,而在其他情况下则不返回?

javascript - 变量没有在 promise 中分配

javascript - 如何在获取后调用后管理重定向请求

javascript - ng-click 中的 if 语句

javascript - 值未定义React JS Redux

node.js - npx 每次都需要重新安装软件包

javascript - 当一次就足够时,RxJs 响应式(Reactive)映射被调用两次