w3ctech

关于使用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);
    })
    
    回复此楼