javascript - p5 Javascript 更新 Firestore 数据库中的绘图元素
问题描述
我是一个非常初级的程序员,但设法python
在树莓派上编写了一个脚本,成功更新了 Firestore 数据库并使用JavaScript
. 然后我打算使用这些数据mappa
在画布/地图上使用和 p5 绘制项目。
我可以控制 Firestore 对象并查看数据,但对于我的生活,我似乎无法在draw()
p5 的函数中使用这些数据。还是作为全局变量?这是我正在尝试做的代码的一个非常简化的版本。
db = firebase.firestore();
docRef = db.collection("Aircraft_data").doc("Firebird");
docRef.get().then(function(doc) {
console.log("Document data:", doc.data());
b = doc.data()
return b;
});
function draw(){
text(b["Altitude"], 200, 200);
}
最令人困惑的是我可以控制台并查看chrome中的数据? 控制台图像
解决方案
您正在进行异步调用,这就是为什么您在回调中看到结果但在以下代码部分中没有看到结果(很可能在回调之前运行)。
P5 具有结构函数,draw() 是其中之一,并且(默认情况下)是循环的。使您的变量成为全局变量并等待它被初始化(或其他一些):
let myData; // make it global
function preload() {
db = firebase.firestore();
docRef = db.collection("Aircraft_data").doc("Firebird");
docRef.get().then(function(doc) {
console.log("Document data:", doc.data());
myData = doc.data();
});
}
function draw(){
if(!myData){ //check whether data is loaded. Change condition to proper one.
// if data is not yet arrived just return as draw() is looping
return;
}
// now the data is arrived, myData is initialized, we can continue
text(myData["Altitude"], 200, 200);
//it is possible to stop looping now:
noLoop();
}
推荐阅读
- spring - 使用 application.properties 覆盖 Swagger 路径
- javascript - Playfab - ReferenceError:未定义“承诺”
- php - 如何从循环中获取值到刀片 - laravel
- c++11 - 如何正确使用具有 condition_variable 的原子类型以避免在轻松的原子读取期间锁定
- node.js - 添加文件时监视文件夹并将文件名写入某个文件
- tensorflow - 当我使用 tensorflow_gpu 时,Dlib 不使用 GPU
- r - 有效地找到数据表的第一个非零元素(对应列)
- python - 如何使带有 TF 后端的 Keras 使用 CPU 而不是 GPU?
- ruby-on-rails - Rails 管理员未使用 Cancancan 或 Devise 进行身份验证
- r - UpsetR:添加数字标签以设置绘图大小