获取存储项目作为字符串而不是对象

时间:2017-01-31 21:48:39

标签: angularjs ionic-framework ionic2

使用下面的代码,我试图从离子存储密钥值对中检索网络链接。

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();
            }
        );
}

我的错误是我试图将'weblink'字符串化,但它仍然是一个对象。我如何将'weblink'转换为字符串以与http.get

一起使用

1 个答案:

答案 0 :(得分:1)

weblink这是一个等待填充的Promise对象。鉴于异步性质,http请求在评估之前在Promise引擎创建的storage对象上执行它。 Promise

如果您打算使用weblink作为http请求,一种解决此问题的方法是将调用转移到.then内,您将通过Promise解析该值。如果仍有疑问,请告诉我们。

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();
    });

}