2017-08-21 1 views
1

Ich versuche Wert zu warten, die ausgeführt werden können, nachdem ändern „this.bookmarList.take (1) .subscribe (...“Wie wartet Wert in Ionic 2

Mein Problem ist, dass, wenn ich das laufen Anwendung, das führt die zweite if-Anweisung „if (== false gefunden)“, bevor ausführen meine abonnieren.

Dies ist mein Code Sie etwas falsch gefunden oder einige Ergänzungen hinzufügen muß, mein Problem zu lösen.

let loader = this.loadingCtrl.create({ 
    content: "", 
}); 
let found=false; 
loader.present().then(()=>{ 
    this.bookmarkList.take(1).subscribe(data=>{ 
     data.forEach(b=>{ 
      if(b.nID==this.appService.id && b.url==url){ 
       let alert = this.alertCtrl.create({ 
       title: 'Already Bookmarked', 
        subTitle: 'This note image already bookmarked', 
        buttons: ['OK'] 
       }); 
       alert.present(); 
       found=true; 
      } 
     }) 
    }) 
}).then(()=>{ 
    if(found==false){ 
     this.afd.list('/bookmark/').push({ 
      uemail: this.userService.email, 
      nID: this.appService.id, 
      url: url, 
      date: dateX 
     }); 
     let alert = this.alertCtrl.create({ 
      title: 'Bookmarked Successfully', 
      subTitle: 'This note image has been bookmarked successfully', 
       buttons: ['OK'] 
     }); 
     alert.present(); 
    } 
}).then(_=>{ 
    loader.dismiss(); 
}) 
+1

Ich glaube nicht, dass Ihre Frage sehr klar ist. Kannst du die ersten zwei Absätze neu schreiben, um es deutlicher zu machen, was du brauchst? – Chris

+0

@Chris sorry, ich habe vergessen, meine letzte Bearbeitung zu speichern .. wünschst du mein Problem zu fangen. –

+1

Warum fügen Sie das 'if (found == false) {...}' nicht innerhalb von 'subscribe' hinzu? – sebaferreras

Antwort

1

Ich könnte die Lösung

finden
let loader = this.loadingCtrl.create({ 
    content: "", 
}); 
let found=false; 
loader.present().then(_=>{ 
    this.bookmarkList.take(1).subscribe(data=>{ 
     data.forEach(b=>{ 
      if(b.nID==this.appService.id && b.url==url){ 
       let alert = this.alertCtrl.create({ 
        title: 'Already Bookmarked', 
        subTitle: 'This note image already bookmarked', 
        buttons: ['OK'] 
       }); 
       alert.present(); 
       found=true; 
      } 
     }) 
     if(found==false){ 
      this.afd.list('/bookmark/').push({ 
       uemail: this.userService.email, 
       nID: this.appService.id, 
       url: url, 
       date: dateX 
      }); 
      let alert = this.alertCtrl.create({ 
       title: 'Bookmarked Successfully', 
       subTitle: 'This note image has been bookmarked successfully', 
       buttons: ['OK'] 
      }); 
      alert.present(); 
     } 
     //return 
    }) 
}).then(_=>{ 
    loader.dismiss(); 
})