Dojo:使用 lang.hitch 时无法到达错误回调

Dojo: Failed to reach in error callback when using lang.hitch

我正在尝试使用 dojo jsonrest 存储从服务器请求数据。在请求时我正在捕捉回调来做一些事情。例如

this.myStore.get(paramValue).then(lang.hitch(this, function (res) {
                        //do something like this.globalVal = res;
                    }, function (err) {
                        console.log(err);
                        //throw error
                    }));

但是上面的代码只在请求return成功时有效,即成功进入deferred的第一个块return,但是当出现错误时,它无法到达在 error callback 中,因此我无法捕获服务器发出的错误 return。

如果我在不使用 lang.hitch 的情况下执行上述代码

this.myStore.get(paramValue).then(function (res) {
                        //do something like this.globalVal = res;
                    }, function (err) {
                        console.log(err);
                        //throw error
                    });

然后就可以了。也就是说,它现在也会到达错误回调,我可以向用户抛出适当的错误。

那么为什么会发生这种情况,如果 lang.hitch 不是可以与 deferred 一起使用的东西,那么使用什么?

谢谢

Hitch 接受两个参数,上下文和要在前面的上下文中执行的函数。目前你正在使用三个,那是行不通的。您正试图将两个函数包装到同一个挂钩中。您需要将它们分别包裹在一个单独的挂钩中:

this.myStore.get(paramValue).then(
    lang.hitch(this, function success (res) {
        console.log('Success');
    }),
    lang.hitch(this, function error (err) {
        console.log('Error');
    })
);