如何在进行 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();
}
}
我一直在寻找有关如何在 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();
}
}