AngularJS锁定了承诺并最终回调

时间:2016-03-04 14:14:03

标签: angularjs

所以我有2个承诺功能。当第一个函数出错时,我希望它显示错误消息。当完成或失败时,我希望他们执行最终捕获所有功能但由于某种原因它不起作用。 我的代码看起来像这样:

// If our garment has a logo
shared.logoExists(garment, model).then(function () {

    // Save our panel
    return shared.save(model);

// If there was an error
}, function () {

    // Display an error message
    toastr.warning(localization.resource.logoPlacementError.message);

// Always close the library
}).finally(function () {

    // Reset our attachments
    self.resetAttachment();

    // Hide our library
    self.closeLibrary();
});

所以基本上我想要实现的是如果第一个函数失败,它将显示和错误。 当第二个功能失败时,它不会做任何事情。 但如果成功或失败,它将始终关闭库。

有谁知道我怎么做到这一点?

3 个答案:

答案 0 :(得分:1)

关闭then函数后必须使用.catch:

// If our garment has a logo
shared.logoExists(garment, model).then(function () {

    // Save our panel
    return shared.save(model);

// If there was an error
}).catch(function () {

    // Display an error message
    toastr.warning(localization.resource.logoPlacementError.message);

// Always close the library
}).finally(function () {

    // Reset our attachments
    self.resetAttachment();

    // Hide our library
    self.closeLibrary();
});

答案 1 :(得分:0)

根据您使用的Angular版本,您可能必须使用“always”而不是“finally”。尝试“永远”,看看它是否有效。

How to always run some code when a promise is fulfilled in Angular.js

答案 2 :(得分:0)

事实证明我的方式很好。 logoExists 功能并未解决/拒绝应该在所有地方的承诺。当我修复它时,上面的代码工作了。