Javascript:使用promise时需要帮助防止代码重复

时间:2018-01-13 16:52:01

标签: javascript promise

我想知道如何防止在以下代码中复制代码。我复制了函数wishModel.createWish()。复制代码的原因是:

  • 在if部分中,必须在承诺(打开模态)之后触发该函数
  • 在else-part中,函数立即执行

感谢您帮助我改进代码!

    if (copyExistsOnList) {
        var copyWarningPopup = $uibModal.open({...});

        copyWarningPopup.result.then(function (wish) {
            wishModel.createWish(newWish, userID, userID, wish._id);
        });
    } else {
        wishModel.createWish(newWish, userID, userID, wish._id);
    }

2 个答案:

答案 0 :(得分:4)

你可以为第二种情况做出立即解决的承诺,然后你总是有一个承诺,你可以把最后的ProductRewardPointController.php.php链接到:

then

答案 1 :(得分:1)

您的代码在wish上使用变量阴影:有一个声明作为函数签名的一部分,另一个声明是您未显示的外部作用域(或者使用全局命名空间)。这意味着有两个完全独立的变量。有些人认为这是一种不好的做法,因为在没有意识到你正在使用内部声明的情况下,可能会意外地在内部范围内编写代码。但我会假设这就是你想要的。

function createWish(wish) {
    wishModel.createWish(newWish, userID, userID, wish._id);
}

if (copyExistsOnList) {
    var copyWarningPopup = $uibModal.open({...});
    copyWarningPopup.result.then(createWish);
} else {
    createWish(wish);
}