【发布时间】:2019-06-21 16:44:02
【问题描述】:
我编写了以下代码来呈现一些帖子(存储在 Cloud Firestore 实例中)。我正在使用 mithril.js。
let SummaryPostView = {
posts: [],
view: function () {
let query = blogModels.postModel.getNLatest(20, "created");
query.then(function (data) {
this.posts = data;
console.log("INSIDE VALUE: ");
console.log(this.posts);
});
console.log("OUTSIDE VALUE: ");
console.log(this.posts);
}
};
this.posts 的值在函数外与this.posts inside the function. 的值不同由于this 的行为可能令人困惑,我还尝试了以下代码:
let SummaryPostView = {
posts: [],
view: function () {
let query = blogModels.postModel.getNLatest(20, "created");
var x = [];
query.then(function (data) {
x = data;
console.log("INSIDE VALUE: ");
console.log(x);
});
console.log("OUTSIDE VALUE: ");
console.log(x);
}
};
为了回应 Chris Sandvik 的回答,我也尝试了以下代码
let SummaryPostView = {
posts: [],
view: function () {
let query = blogModels.postModel.getNLatest(20, "created");
query.then(function (data) {
this.posts = data.docs.map(function (doc) {
let out = doc.data();
out.id = doc.id;
return out;
});
console.log("INSIDE");
console.log(this.posts)
});
console.log("OUTSIDE");
console.log(this.posts);
}
};
【问题讨论】:
-
所有需要访问数据的代码,必须在回调内部或从那里调用。见stackoverflow.com/questions/52488087/…
标签: javascript firebase google-cloud-firestore