如何在进行 http 调用 IONIC 6 之前获取电容器存储值

How to get Capacitor Storage values before doing http call IONIC 6

我一直在寻找有关如何在 Ionic 6 中获取我的电容器存储中的一些值并在执行 HTTP 请求之前使用它们的教程。

cart.service.ts中的示例方法:

getCart() {
  Storage.get({ key: 'token' }).then( response => {
  this.token = JSON.parse(response.value);
});
return this.http.get<Product[]>(this.token.api_route + 'user/cart');
}

我想在onInit上调用什么:

this.cartService.getCart().subscribe(response => {
  this.products = response;
});

所以主要问题是令牌为空,因为从存储中获取它是异步的。我该如何解决这个问题?在进行 HTTP 调用之前获取 token.api_route?

使用 promise 而不是 observable。 您可以使用 http.get(url).toPromise() 来实现。

这是一个例子:

import { Component } from '@angular/core';
import { Storage } from '@capacitor/storage';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})
export class HomePage {
  html = 'hello';
  constructor(public http: HttpClient) {}

  async test() {
    await this.saveToStorage();
    this.problem();
  }

  async saveToStorage() {
    console.log('Saving something to local storage...');
    await Storage.set({
      key: 'url',
      value: 'https://jsonplaceholder.typicode.com/posts',
    });
  }

  problem() {
    this.getApiValue().then((value) => {
      this.html = JSON.stringify(value) ;
    });
  }
  async getApiValue() {
    const urltogo = await Storage.get({key:'url'});
    return this.http.get(urltogo.value).toPromise();
  }
}