从离子存储的承诺中可以观察到退货

时间:2020-03-18 02:42:37

标签: angular ionic-framework observable

我正在尝试从存储中返回对象的值。

首先,我正在评估是否有参数“缓存”,因此,如果要保存,我想检查是否已保存以返回它,否则我想保存它。

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

但是要像这样保存它: enter image description here

您在图片上看到的实际上是不保存任何图片

什么时候可以从中得到东西实际上是空的: enter image description here

我还没有做出正确的承诺和可观察到的东西:s 我如何获取实际的字符串值并将其返回?

0 个答案:

没有答案