首页 > 解决方案 > 从 AngularJS 中的 Promise.then() 返回 API 响应

问题描述

我是 AngularJS 的新手,想在 AngularJS 中编写一个函数,试图删除一个用户。成功时它应该返回一个布尔值,确定他是否被成功删除。

无论如何,从 Promise 中提取的结果总是返回 true,即使 Api-Response 为 false。我尝试提取此处所写的响应:Return value from a promise in Angular。我也尝试了其他链接,但它们都没有真正帮助我解决我的问题。

user.controller.js:

deleteUser(user) {

    const self = this;

    self.userActionPromise = self.userService.deleteUser(user.id).then(deleted => {
        if (deleted) {
            self.messagesService.successMessage('user.DELETE_SUCCESS');
            self.loadUsers();
        } else {
            self.messagesService.errorMessage('user.DELETE_FAILURE');
        }
    });
}

user.rest.service.js:

self.user = $resource(config.restServerUrl + 'users/:id', {id: '@id'}, {
    delete: {method: 'DELETE'}
});

deleteUser(id) {
    return this.user.delete({id: id}).$promise.then(deleted => {
        return !!deleted;
    });
}

标签: javascriptangularjsspring-boot

解决方案


的结果

return this.user.delete({id: id}).$promise.then(deleted => {
  return !!deleted;
})

请求完成时始终返回 true。

如果要覆盖失败结果:

return this.user.delete({id: id}).$promise.then(deleted => {
  return deleted;
}, function (error) {
  return error;
})

当服务器返回错误https://www.baeldung.com/spring-boot-custom-error-page时将执行第二个函数

Http 响应 statusCode 应该说出现错误,例如 500 ( https://developer.yahoo.com/social/rest_api_guide/http-response-codes.html )。当您返回状态码 200 和 resultfalse时,它只是告诉 angularjs 请求成功完成及其结果false


推荐阅读