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

时间:2015-12-16 04:36:48

标签: javascript callback dojo deferred

我正在尝试使用dojo jsonrest store从服务器请求数据。请求我抓住回调来做一些事情。例如

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

但是上述代码仅在请求返回成功时起作用,即它在成功返回时在延迟的第一个块中输入,但是当发生某些错误时,它无法到达error callback因此i'我无法捕获服务器返回的错误。

如果我不使用像这样的lang.hitch执行上述代码

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

然后它有效。即它现在也将达到错误回调,我可以向用户抛出相应的错误。

那么为什么要发生这种情况,如果lang.hitch不是可以延迟使用的东西那么使用什么?

由于

1 个答案:

答案 0 :(得分:3)

Hitch接受两个参数,context和要在前面的上下文中执行的函数。在您使用三个的那一刻,这不会起作用。你试图将两个功能包装在同一个故障中。你需要将它们分别包裹起来:

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