簡體   English   中英

角度-返回值未定義

[英]Angular - Return value as undefined

我有以下功能:

  redirect() {
    this.afs.collection('links').doc(this.path).ref.get().then(function(doc) {
      if(doc.exists) {
        // define data and clicks
        var data = doc.data();
        var clicks = doc.data().clicks;
        // Update clicks
        doc.ref.update({
          'clicks': (clicks + 1)
        })
        .then(function() {
          if(data.landing == false) {
            // Redirect to url
            return false;
          } else {
            // Stay for Landing Page
            return true;
          }
        });
      } else {
        this.router.navigate(['/404']);
      }
    }).catch(function(error) {
      console.log("Error getting document:", error);
    });
  }

當我在onNgInit中嘗試以下操作時:

console.log(this.redirect());

返回未定義。 我不確定該如何將值設置為true或false以返回true或false。

函數redirect目前不返回任何內容。 但是看來您正在與Promise合作。 嘗試重構以返回該承諾:

redirect() {

   return this.afs.collection('links').doc(this.path).ref.get().then(function(doc) {
      if(doc.exists) {
        // define data and clicks
        var data = doc.data();
        var clicks = doc.data().clicks;
        // Update clicks
        doc.ref.update({
          'clicks': (clicks + 1)
        })
        .then(function() {
          if(data.landing == false) {
            // Redirect to url
            return false;
          } else {
            // Stay for Landing Page
            return true;
          }
        });
      } else {
        this.router.navigate(['/404']);
      }
    }).catch(function(error) {
      console.log("Error getting document:", error);
    });
  }

因此,現在您可以在諾言解決時打印出該值。

this.redirect().then(value => console.log(value))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM