[英]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.