我正在尝试从存储中返回对象的值。
首先,我正在评估是否有参数“缓存”,因此,如果要保存,我想检查是否已保存以返回它,否则我想保存它。
if(valueCache === "cache"){
if(this.StoredInStorage(value)!=null){
this.StoreInStorage(value).subscribe(res => {
return res;
});
}else{
this.StoredInStorage(value).subscribe(res => {
return res;
});
}
}
这些是方法
StoredInStorage(value:string ):Observable<any>{
let st = this.storage.get('translationCache');
return Observable.fromPromise(
st.then((val) => {
if(val && val.hasOwnProperty(value)){
console.log("Hay val en memoria");
let v = value;
if(val.hasOwnProperty(v)){
console.log("Encontrado en memoria:");
console.log(val[v]);
return val[v];
} else {
console.log("este else qlq?");
return null;
}
}
})
);
}
StoreInStorage(value:string ):Observable<any>{
let st = this.storage.get('translationCache');
return Observable.fromPromise(
st.then((res) => {
if(res === null){
res = {};
}
if(!res.hasOwnProperty(value)){
console.log(this.Translation(value));
res = Object.assign(res, {[value] :this.Translation(value)});
this.storage.set('translationCache', res);
console.log("traduccion añadida");
console.log(value + ":" + this.Translation(value));
return this.Translation(value);
}
})
);
}
因为我不得不等待翻译保存它,所以我还有另一个Observable,实际上诺言也变成了Observables
Translation(value):Observable<any>{
const params = {
Text: value,
SourceLanguageCode: "en",
TargetLanguageCode: "es"
};
let actionPromise = this.translate.translator.translateText(params).promise();
let observe = Observable.fromPromise(
actionPromise.then((data) => {
return (data.TranslatedText);
}).catch((err) => {
console.log(err);
return err;
})
);
return observe;
}
您在图片上看到的实际上是不保存任何图片
我还没有做出正确的承诺和可观察到的东西:s 我如何获取实际的字符串值并将其返回?