所以我有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();
});
所以基本上我想要实现的是如果第一个函数失败,它将显示和错误。 当第二个功能失败时,它不会做任何事情。 但如果成功或失败,它将始终关闭库。
有谁知道我怎么做到这一点?
答案 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 功能并未解决/拒绝应该在所有地方的承诺。当我修复它时,上面的代码工作了。