我正在尝试编写一个进行API调用并返回Promise的函数。这是我的函数定义:
/**
* Gets the IAM policy for a service account. Wraps getIamPolicy endpoint:
* https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/getIamPolicy
* @param {!Project} project
* @param {string} email - Unique email for a service account.
* @return {!angular.$q.Promise<!Object<!string, !Policy>>}
*/
getIamPolicy(project, email) {
const path = constructPath_(project, email) + ':getIamPolicy';
return this.apiClient_.request({method: 'POST', path}, this.config_)
.then(response => { debugger; });
}
我正在使用闭包编译器,这会引发编译错误:
service-account-service.js:124: ERROR - inconsistent return type
found : angular.$q.Promise<undefined>
required: angular.$q.Promise<Object<string,Policy>>
return this.apiClient_.request({method: 'POST', path}, this.config_)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我做错了什么?我该如何回复承诺?
我使用myiClient_.request辅助函数编写的以前的函数工作正常。我应该从this.apiClient_.request返回相同的值。
策略和项目在外部文件中定义(我相信正确)。我也在使用Angular 1.4
答案 0 :(得分:2)
错误表示您返回的Promise<undefined>
是正确的。当this.apiClient_.request
辅助函数返回Promise时,Promise的返回类型(<undefined>
位)被.then(response => { debugger; })
代码覆盖。即,该代码没有return语句,因此返回undefined
!
当我将代码更改为:
时,它才有效return this.apiClient_.request({method: 'POST', path}, this.config_)
.then(response => {
debugger;
return response;
});