离子3中第一次api调用中的未定义响应

时间:2017-08-17 06:15:37

标签: javascript angular api observable ionic3

我正在尝试在ionic3

中实现嵌套的api调用
submitLoginForm() {
    var username = this.formData.value.username;
    var password = this.formData.value.password;
    var bodyjson;
    var userId;

    this.ApidataService.logincheck(username,password).subscribe(data => {
        this.logindetail = data;
        bodyjson = JSON.parse(this.logindetail._body);
        userId =  bodyjson.user.id;
        if( userId != undefined){
            this.ApidataService.userdata(userId).subscribe(data => {
                this.userInfo = data;
            });
        }
        console.log(userId);
    });
    console.log(this.userInfo);
}

现在,当我调用此函数时,嵌套的api为第一次调用返回undefined,然后从第二次调用开始返回正确的值但是当我尝试记录发送到api的参数时,我注意到正确的值每次都过去了。我认为这是由于一些同步问题,但我无法找出问题和相同的解决方案。

1 个答案:

答案 0 :(得分:0)

你可以在这里使用var enc = EncryptionConstants() print(enc.encKey) 。似乎你不需要检索两个请求的结果,因此这应该适合你。

flatMap

然后:

 import { Observable } from "rxjs/Observable";
 import 'rxjs/add/observable/flatMap';

您可以阅读有关flatMap here

的更多信息