javascript - 关于promise里面then返回reject的疑问
PHP中文网
PHP中文网 2017-04-11 12:04:23
[JavaScript讨论组]

我在typescript项目里用reqwest写了一个公共的请求方法:

function postReq(
    obj: {
        url: string,
        headers?: any,
        data?: Object,
        type?: string,
        method?: string,
        contentType?: string
    }) {
    return Reqwest({
        url: obj.url,
        method: 'post',
        type: obj.type||'json',
        contentType:obj.contentType||'application/json',
        data: JSON.stringify(obj.data||{}),
        headers: obj.headers||{}
    }).then((res:Response) => {
        if (res.status.code != 0) {
            // return Promise.reject(res);
            throw new Error('数据错误');
        } else {
            return res;
        }
    }).fail((err,msg) => {
        console.log(err);
        let errBody;
        try {
            errBody = JSON.parse(err.response)
            errBody = errBody.status.msg;
        } catch (error) {
            errBody = 'JSON 编译出错'
        }
        message.error(errBody);
        // alert(`接口出错!${errBody}`);
    });
}

在调用的时候这样调用:

        postReq({
          url: '/api/prod/save',
          data: body
        })
        .then((res:Response) => {
            // do somthing when resolve
        });

现在的问题是,有些时候能捕获到异常,有些时候又不能捕获。
我现在的问题是,我在then里面throw一个错误,为什么不会跳到fail函数里执行呢?

PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
迷茫

記得Reqwest返回的不是Promise/A+或ES6, 是個自己的Promise實現

我都是Promise.resolve(reqwest()) 這樣用的

高洛峰

没看你代码。针对promise我就举个例子吧。 自己稍微捋一捋

var promise = new Promise(function(resolved,reject){
    //这个是你要执行的代码
    ...
    ...
    if(某种成功条件){
        resolved("成功标记返回的字符");
    }else{
        reject("看我形参名也知道是 拒绝咯,表相反的某种条件嘛");
    }
});

promise.then(function(resolved){
    //如果 在你 上述的 promise对象里面的 的回掉函数里面 resolved()了;就会进入then的第一个函数参数;
    //而这里的 resolved就是你前面 传过来的 标记 值
},function(reject){
    //如果 在你 上述的 promise对象里面的 的回掉函数里面 reject()了;就会进入then的第二个函数参数;
    //而这里的 reject就是你前面 传过来的 标记 值
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号