angular
  • rest
  • http
  • typescript
  • ionic2
  • 2017-08-15 6 views 1 likes 
    1
    getUsableToken() { 
    
        let platformName = "abc"; 
        let platformId = "123123"; 
    
        return this.http.get('http://localhost:17001/platform/' + platformId + '/key?name=' + platformName).map(res => res.json()) 
         .subscribe(data => { 
    
           let secretKey = data.payload.platformInfo.key; 
    
           return this.http.get('http://localhost:17001/platform/' + platformId + '/token?name=' + platformName + '&key=' + secretKey).map(res => res.json()) 
            .subscribe(data => { 
             return data.payload.token; 
    
            }, err => { 
             console.log(err); 
            }); 
          }, 
          err => { 
           console.log(err); 
          }); 
    } 
    

    このコードではdata.payload.tokenに戻したいと思います。どうやってするか?どんな助けもありがとう。httpリクエスト内のhttpリクエスト内で受信した結果を、イオン2フレームワークで角度2を使用して返す方法は次のとおりです。

    import 'rxjs/add/operator/mergeMap'; 
    
    //.... 
    
    getUsableToken() { 
        return this.http.get('url') 
        .map(data => { 
         let secretKey = data.json().payload.platformInfo.key 
         return secretKey; 
        }) 
        // where 'key' is the parameter you need for the second call 
        .flatMap(key => this.http.get('url').map(data => { 
         let token = data.json().payload.token; 
         return token; 
        })) 
    
    } 
    

    、今あなたが購読:2番目の呼び出しは最初の呼び出しの結果に依存するので、このようなものであるので、あなたは何ができるか

    +0

    これは現在何をしていますか? –

    +0

    オブジェクトを送信しています。私はthis.jwtToken = this.authService.getUsableToken()のようにこの値を取得しています。 –

    +0

    ああ、これらのリクエストは非同期です。すぐに何かを「返す」ことはできません。 'getUsableToken()'は 'this.http.get(...)。subscribe(...);から' Subjectを返しています '' data.payload.token'や約束を含む新しいObservableを作成することができました –

    答えて

    1

    は、ここflatMapmergeMap)を利用することですトークンを受け取る:

    doSomething() { 
        this.myService.getUsableToken() 
        .subscribe(token => console.log(token)) 
    } 
    
    +0

    それは私のために働いてくれてありがとう –

    +0

    素晴らしい! ):) – Alex

    関連する問題