私はAngularJS v 1.5.0
を使用しています。 Chrome版55.0.2883.95
です。私が見ているエラーは、this SO postと同様のエラー動作を示していますが、私の状況のエラーの説明はObject
です。「return logFn.apply(console、args);」のAngularJS Nonstescriptエラー;
私はcreated a plunkerにエラーを示しています。プランナーでデベロッパーコンソールを開き、エラーを確認します。
angular.js:13550 Object {httpStatusCode: 503, error: Object}
劇中AngularJSコードは次のとおりです:
function consoleLog(type) {
var console = $window.console || {},
logFn = console[type] || console.log || noop,
hasApply = false;
// Note: reading logFn.apply throws an error in IE11 in IE8 document mode.
// The reason behind this is that console.log has type "object" in IE8...
try {
hasApply = !!logFn.apply;
} catch (e) {}
if (hasApply) {
return function() {
var args = [];
forEach(arguments, function(arg) {
args.push(formatError(arg));
});
return logFn.apply(console, args); // Error thrown on this line
};
}
// we are IE which either doesn't have window.console => this is noop and we do nothing,
// or we are IE where console.log doesn't have apply so we log at least first 2 args
return function(arg1, arg2) {
logFn(arg1, arg2 == null ? '' : arg2);
};
012以下のサービスを考えると
、
this.test = function() {
return $q(function(resolve, reject) {
var errorObject = {
httpStatusCode: 503,
error: {
code: 5030,
message: 'Oh no! Something went wrong, please try again'
}
};
reject(errorObject);
}).then(function successCallback(response) {
return response;
}).catch(function errorCallback(response) {
throw response;
});
};
AngularJSコードは、次のエラーを生成します
var test = function() {
userService.test()
.then(function successCallback(responseObject) {
console.log('Beginning of then');
})
.catch(function errorCallback(errorResponseObject) {
console.log('Beginning of catch');
});
}
エラーは、私が約束拒否を処理し、それを再投げていたという事実に起因すると思わ:ここでは
は、私がサービスを呼び出す方法です。捕まえておらず、また転覆しなければ、私は間違いがない。キャッチして再投げているときにエラーが表示されるのはなぜですか?
更新:キャッチ約束拒否を拒否するように$ qをサービスを使用して、私が見ていたAngularJSエラーを回避できることが表示されます。今のところこのアプローチを使用しますが、なぜpromise catchを投げ捨てるとエラーが発生するのかについては興味があります。エラーなし
例コード:
this.test = function() {
return $q(function(resolve, reject) {
var errorObject = {
httpStatusCode: 503,
error: {
code: 5030,
message: 'Oh no! Something went wrong, please try again'
}
};
reject(errorObject);
}).then(function successCallback(response) {
return response;
}).catch(function errorCallback(response) {
return $q.reject(response);
});
};