关于使用thinkjs时action里promise的问题

我在action里这样使用promise,希望通过promise链,能统一处理异常,以下是我的部分代码:

 doCompleteInfoAction: function () {
 ...
 var promise = this.session('house').then(function (house) {
 if (!_.isEmpty(house)) {
 return D('house').add({
 bind_time: moment().format('YYYY-MM-DD hh:mm:ss'),
 name: house.hname
 });
 }
 });
 promise.then(function (insert_id) {
 return D('default').where({
 uid: self.user_info.id
 }).update({
 hid: insert_id
 });
 });
 promise.then(function () {
 throw 'a error';
 self.json({status: 1});
 });
 return promise;
 }

我发现thinkjs不能处理我抛出的异常?

w3ctech微信

扫码关注w3ctech微信公众号

共收到2条回复

  • promise.then会生成一个新的promise,所以要

    promise = promise.then(function(){})
    
    回复此楼
  • return this.session('house').then(function (house) {
     if (!_.isEmpty(house)) {
     return D('house').add({
     bind_time: moment().format('YYYY-MM-DD hh:mm:ss'),
     name: house.hname
     });
     }
     return getPromise('reject', true);
    }).then(function (insert_id) {
     return D('default').where({
     uid: self.user_info.id
     }).update({
     hid: insert_id
     });
    }).then(function () {
     self.json({status: 1});
    }).catch(function(err){
     if(err.message === 'reject'){
     //ignore
     }
     //return getPromise(err, true);
    })
    
    回复此楼

AltStyle によって変換されたページ (->オリジナル) /