使用下面的代码,我试图从离子存储密钥值对中检索网络链接。
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
一起使用答案 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();
});
}