我正在尝试使用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不是可以延迟使用的东西那么使用什么?
由于
答案 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');
})
);