angular 内的代码订阅不等待 API 响应到来

code inside angular subscribe not waiting for API response to come

angular 内的代码订阅不等待 API 响应完成?是否仅等待 API 响应状态代码而不是实际响应值?

我有一个 API,它通常会给出 RSA public 密钥(字符串)作为响应。我正在从 Angular(版本 8)ts 文件中调用 API。

//For fetching public key from API response 
    this.authService.publicKeyGen(identifier).subscribe(
            res => {
              console.log("fooooo...");   NOT PRINTING / NOT EXECUTING
              pubKey = res;
            },
              (e => console.log('error: ', e)),
              (() => console.log('the sequence completed!'))  PRINTING / EXECUTING
            );

    public publicKeyGen(identifier) {
        let url = this.authUrl + "/v1/keys/generate";
        return this.http.get(url, {
          params: { identifier : identifier}
        });
      }

虽然 API 调用成功(状态代码 200),但它没有进入“res”,我无法获得响应值。

注意:实际上 API returns 成功代码首先是 200,然后在一小段延迟后给出响应数据。在订阅内部,我无法从响应值设置 public 键,因为 API 调用成功(200),但 API 响应数据仍然不可用并且未执行“res " 部分尽管它进入订阅内部,因为 API 状态代码已经出现。

请帮忙。

API 响应 - MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTqMCDom4QjKFoucN/Wa5CJ+eECcs2Q7V5uAWH4DUc1F3+02LsWOwWP5JKVLKOEBjybR50eKpGLsTwnIUNeh8oRsq7l4YAaeYDSrbkij62m8tsPyMwleeD3jIc8RlAD7Zt/bTvJGMA/W6hJJ0wf0kU2pmPuauGBIdeZqoYhRNCqwIDAQAB

您的 publicKeyGen 方法是否驻留在 auth.service.ts 文件中?

此外,最好将 return 值添加到 publicKeyGen 签名,如下所示:

public publicKeyGen(identifier): Observable<string> {
    let url = this.authUrl + "/v1/keys/generate";
    return this.http.get(url, {
      params: { identifier : identifier}
    });
  }

尝试为 headers 设置 responseType 以验证它是来自服务器的响应类型。

 public publicKeyGen(identifier) {
    let url = this.authUrl + "/v1/keys/generate";
    const headers = new HttpHeaders().set('Content-Type', 'text/plain'); 
    return this.http.get(url, { headers, responseType: 'text'});
 }

如果它是纯字符串,那么将打印控制台日志。您可以使用下面的解析方法将其转换为 JSON

const pubKey = JSON.parse(res);

快乐编码..:)