使用下面的代码,我试图从离子存储键值对中检索网络链接。
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
这里是一个等待填充的Promise
对象。鉴于异步性质,http 请求在评估之前对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();
});
}