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 返回的错误的正确方法。