Dojo - request.get - .Uncaught TypeError:request.get(...)。then(...)。catch不是函数

时间:2017-08-02 15:14:38

标签: node.js dojo

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不起作用,以及为什么替换错误函数呢。

1 个答案:

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