Dojo中的.catch错误:
<button id="queryStudentId" data-dojo-type="dijit/form/Button"
data-dojo-props="iconClass:'dijitIconTask',
onClick:function(){
console.debug('clicked simple');
var studId = dojo.byId('studentId').value;
dom.byId('studentFeedback').value +=
'queryStudentId clicked studentID=' + studId + '\n';
// AJAX Get the data from the server
var url = '../student/' + dom.byId('studentId').value;
dom.byId('studentFeedback').value += url + '\n';
require(['dojo/request'], function(request){
request.get(url)
.then(function(response){
dom.byId('studentFeedback').value += response;
//})
//.catch(function(response){
// dom.byId('studentFeedback').value += response;
//});
},
function(error){
dom.byId('studentFeedback').value += response;
});
})
}">
Query with Above StudentId
</button>
当我在上面的示例中尝试使用.catch时,我收到此错误:
未捕获TypeError:request.get(...)。then(...)。catch不是函数
我不明白为什么.catch不起作用,以及为什么替换错误函数呢。
答案 0 :(得分:3)
dojo中的Promise没有.catch()函数。
相反,您应该使用.otherwise()
request.get(url)
.then(function(response) {
dom.byId('studentFeedback').value += response;
})
.otherwise(function(err) {
console.error(err);
});
根据文档,将回调函数作为.then()的第二个参数传递也是捕获promise所返回的错误的正确方法。