如何使 breeze 识别成功重试的 savechanges() 请求

How to make breeze recognize a successful retried savechanges() request

我有一个拦截器,它会自动检测 401 错误,获取 re-fires 请求的新令牌...

问题是在执行此操作时 breeze 实体管理器也收到此错误,但没有意识到请求已重做,导致在下一次保存更改时重复。

我已经尝试过但似乎无法找到通知 breeze 实体已保存的方法..

请求响应被这个拦截

  var responseError = function (rejection) {

        var authService = $injector.get("auth");
        var authData = localStorageService.get("authorizationData");

        if (rejection.status === 401) {
            if (authData && authData.refreshToken) {
                authService.refreshToken()
                    .then(function () {
                        var $http = $injector.get("$http");
                        return $http(rejection.config);
                    },
                    function (error) {
                        $location.path("/login");
                        return error;
                    });
            }
            else {
                authService.logOut();
                $location.path("/login");
            }

        }
        return $q.reject(rejection);
    };

有什么方法可以通知 breeze 重试成功?

我认为问题是您的拦截器 总是 掉落到最后一行并 returning 原来的401 拒绝。

我认为您遗漏了 return 声明,该声明会 return 重试承诺:

if (rejection.status === 401) {
    if (authData && authData.refreshToken) {
        return authService.refreshToken().
        ...