2017-01-31 16 views
0

以下のコードでは、イオンストレージキー値のペアからウェブリンクを取得しようとしています。ストレージアイテムをオブジェクトではなく文字列として取得

loadpage(){ 

    let weblink = this.storage.get('link').then((val) => { 
     JSON.stringify(val); 
     console.log('Your link is', val); 
    }); 

    this.http.get(weblink) 
     .timeout(2000) 
     .map(res => res.json()) 
     .subscribe(data => { 
      this.mainContact = data; 
      this.storage.set ("mainContact", JSON.stringify(data)); 
      }, 
      err => { 
       this.connectionAlert(); 
      } 
     ); 
} 

私のエラーは「ウェブリンク」を文字列化しようとしていますが、依然としてオブジェクトです。どのように私はhttp.getで使用するために 'weblink'を文字列に変換するのですか?

答えて

1

weblinkここでは、フルフィルされるのを待っているPromiseオブジェクトです。非同期性を前提にすると、HTTPリクエストは、エンジンで作成されたオブジェクトを評価する前に実行しています。あなたはhttpリクエストのためweblinkを使用することを意図している場合Promise

、これを克服するための1つの方法は、あなたがPromiseによって解決された値を持つことになります.then内部コールをシフトしています。まだ疑問がある場合はお知らせください。

loadpage() { //this part is in your loadpage 
    this.storage.get('link').then((val) => { 

     this.performWebRequest(val); //this 
     //or performWebRequest(JSON.stringify(val)) depending on the value stored 
     console.log('Your link is', val); 
    }); 
} 

performWebRequest(weblink) { 
    this.http.get(weblink) 
    .timeout(2000) 
    .map(res => res.json()) 
    .subscribe(data => { 
     this.mainContact = data; 
     this.storage.set("mainContact", JSON.stringify(data)); 
    }, 
     err => { 
     this.connectionAlert(); 
    }); 

} 
+0

performWebRequest(weblink)でtypescriptエラーが発生すると ';'と表示されます。期待される。私はこれを試して実行しようとしています。しかし、私はあなたのことを理解しています。私がこれを働かせたら、答えを受け入れるだろう。助けてくれてありがとう。 –

+0

@ThomasDegroot、私はちょうどtypescriptを考慮してコードスニペットを更新しました..記憶容量の要求がloadpage関数と 'this.preformWebRequest'にあるだけで大​​きなものはありません.. – Searching

+1

はい私は同様の何かを思い付いた私よりも清潔です。助けてくれてありがとう。 –

関連する問題