Dojo - request.get - .Uncaught TypeError: request.get(...).then(...).catch is not a function
Dojo - request.get - .Uncaught TypeError: request.get(...).then(...).catch is not a function
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 时,出现此错误:
Uncaught TypeError: request.get(...).then(...).catch is not a function
我不明白为什么 .catch 不起作用,为什么替换错误函数会起作用。
dojo 中的 Promise 没有 .catch() 函数。
相反,您应该使用 .otherwise()
request.get(url)
.then(function(response) {
dom.byId('studentFeedback').value += response;
})
.otherwise(function(err) {
console.error(err);
});
根据文档,将回调函数作为 .then() 的第二个参数传递也是捕获 promise 返回的错误的正确方法。
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 时,出现此错误:
Uncaught TypeError: request.get(...).then(...).catch is not a function
我不明白为什么 .catch 不起作用,为什么替换错误函数会起作用。
dojo 中的 Promise 没有 .catch() 函数。
相反,您应该使用 .otherwise()
request.get(url)
.then(function(response) {
dom.byId('studentFeedback').value += response;
})
.otherwise(function(err) {
console.error(err);
});
根据文档,将回调函数作为 .then() 的第二个参数传递也是捕获 promise 返回的错误的正确方法。