【问题标题】:Promise Function not return error in Angular 6Promise 函数在 Angular 6 中不返回错误
【发布时间】:2020-04-05 12:47:54
【问题描述】:
  Call(apiurl, model) {
        return new Promise((resolve, reject) => {
            this.adminService.add<any>(apiurl, model).toPromise().then(res => {
               return resolve({
                    'error': false,
                    'data': res
                });
            }), error => {
                return reject({
                    'error': true,
                    'data': error
                });
            }
        });
    }

这是我的功能。 当我调用此函数并且 API 响应为 200 Ok 响应时,它会返回响应,但是当 API 抛出错误时,它不会返回错误

public add<T>(APIpath, data): Observable<T> {
        return this.http.post<T>(apiPath, data);
}

这是我的通用函数,用于调用 API 的调用函数

this.Result = await this.Call("API Path", Model);

这是调用此函数的代码,我想将响应存储在此结果变量中

【问题讨论】:

    标签: angular


    【解决方案1】:

    这是因为错误块的位置错误。您可以如下更改您的代码以使其正常工作。希望你使用TypeScript

    var promise = new Promise(function(resolve, reject){
        return this.adminService.add<any>(apiurl, model).toPromise().then(res=>{
            resolve({
                'error': false,
                'data': res
            })
        }).catch(error=>{
            resolve({
                'error': true,
                'data': error
            }) 
        });
    });
    

    请注意catch 块并删除return 语句。

    【讨论】:

    • 这也不是变量中的返回值
    • @RajuGiri 要获取变量中的值,您需要解决它。请参阅编辑后的答案。所以两者都会解决这个承诺。为什么即使出现错误我们也要解决它,因为我们在add 函数中没有catch 块。请告诉我结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 2019-01-01
    • 2017-03-17
    • 1970-01-01
    相关资源
    最近更新 更多