gpt4 book ai didi

javascript - 没有从 promise 中抛出 Angular 错误最终被阻止

转载 作者:行者123 更新时间:2023-12-03 07:44:38 25 4
gpt4 key购买 nike

由于某些原因,当它们出现在promise的“finally”块中时,我看不到任何错误(例如语法错误)。这是为什么?

angular.module('App', [])
.controller('AppCtrl', function(TestService) {

TestService.outerMethod().then(function() {
console.log('Success')
}, function(error) {
console.error('Error')
})

})

.service('TestService', function($q) {

this.outerMethod = outerMethod;

function innerMethod() {
var deferred = $q.defer();
deferred.resolve();
return deferred.promise;
}

function outerMethod() {

var deferred = $q.defer();

// syntaxErrorVisible

innerMethod().finally(function() {

// syntaxErrorNotVisible
deferred.resolve();

});

return deferred.promise;
}

})

;

Codepen: http://codepen.io/anon/pen/vOJGpG

问题是,当我们取消注释那些注释时,会发生语法错误,当错误放置在此代码的“finally”块中时,我们不会在浏览器控制台中出现任何错误。

最佳答案

问题是您兑现 promise 的方式:

return deferred.promise

在这条线上,您刚刚返回了原始 promise 。您的 call 者对其所附的 finally一无所知。为了保持链,您需要返回 finally返回的promise:
function outerMethod() {

var deferred = $q.defer();

// syntaxErrorVisible

return innerMethod().finally(function() {

syntaxErrorNotVisible
deferred.resolve();

});
}

Updated Pen

关于javascript - 没有从 promise 中抛出 Angular 错误最终被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30839107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com