필요할 때 저장소에서 신뢰할 수 있는 데이터를 얻는 방법은 무엇입니까?

1792 단어 angular
안녕하십니까,

저는 오래된 c/java/php/html/js/perl 프로그래머이고 이 각진 부분에 들어가려고 합니다. 첫 번째 앱을 단계별로 만들고 로그인을 위해 비밀번호 복구 서비스를 구현하고 있습니다. 모든 것을 이해하지는 못하지만 이미 작동합니다. 이제 데이터 저장에 문제가 있습니다. 문제는 값을 저장했는데도 한번에 값이 나오지 않는다는 것! 한 구성 요소에서 다른 구성 요소로 세션 값을 "전송"하기 위해 커패시터 저장소를 사용하는 두 개의 구성 요소를 상상해 보십시오.

여기에서 인터넷에서 찾은 예와 유사한 스토리지 서비스를 만들었습니다.

export class StorageService {

  constructor() { }

    async setString(key: string, value: string) {
        await Storage.set({ key, value });
    }


    async getString(key: string): Promise<{ value: string }> {
        return (await Storage.get({ key }));
    }




첫 번째 구성 요소는 양식의 제출 버튼을 누를 때 setString()을 호출합니다.

   this.data.setString('session', result.session);


그런 다음 프로세스를 완료하기 위해 다른 제출 버튼을 누를 때 세션 값에 대한 액세스를 시도하는 두 번째 양식 구성 요소에 대한 리디렉션을 사용합니다.

     this.data.getString('session').then((d: any) => {
      if (d.value) {
        this.session = d.value;
      } 
    });


그러나 대부분 this.session은 정의되지 않았습니다. 왜요? 이 코드로 이 경우를 포착합니다.

   if(this.session === undefined) {
      const alert = await this.alertController.create({
        header: 'Hint',
        message: 'An error occured, please try again',
        buttons: ['OK'],
      });
      loading.dismiss();
      await alert.present();
      return;
    } 


제출 버튼을 두 번째로 누르면 세션 값이 정의됩니다! 나는 이것에 대해 헤매고 있지만 이 "await/async/promise"주제를 아직 이해하지 못했다는 것을 인정해야 합니다. 첫 번째 액세스 시도에서 저장된 값을 얻고 싶습니다.

geString() 메서드로 while(this.session === undefined) {} ​​루핑을 사용해야 합니까?

도움을 주셔서 미리 감사드립니다.

좋은 웹페이지 즐겨찾기