javascript - 使用 javascript 类中的方法返回未定义
问题描述
我有一个带有一个简单方法的类,它有一个 firestore 调用,我认为它是异步的。问题是当我调用这个方法时,它返回 undefined 并且我不知道如何实现一个回调函数来返回我需要的数组。
我班的代码是:
class Alumnes {
llista(ordre) {
db.collection('alumnes')
.orderBy('cognoms', ordre)
.get()
.then(function (doc) {
var llistaAlumnes = [];
doc.forEach((doc) => {
llistaAlumnes.push(doc.data().nom + ' ' + doc.data().cognoms);
});
return llistaAlumnes;
})
.catch(function (err) {
console.log(err);
});
}
我用这段代码调用它:
var alumnes = new Alumnes();
var llistaAlumnes = alumnes.llista('asc');
console.log(' llistaAlumnes', llistaAlumnes);
但它永远返回undefined因为 firestore 使用异步函数。firestore 结束通话后如何设置 llistaAlumnes?
解决方案
为了从函数中获得一些结果,它必须return
有所作为。在您的情况下,您应该像这样返回承诺
class Alumnes {
llista(ordre) {
return db.collection('alumnes')
.orderBy('cognoms', ordre)
.get()
.then(function (doc) {
var llistaAlumnes = [];
doc.forEach((doc) => {
llistaAlumnes.push(doc.data().nom + ' ' + doc.data().cognoms);
});
return llistaAlumnes;
})
.catch(function (err) {
console.log(err);
});
}
}
然后您可以找出结果,但请记住以异步方式获取结果,因为对数据库的调用不是即时的
var alumnes = new Alumnes();
var llistaAlumnes = alumnes.llista('asc');
llistaAlumnes.then(res => {
console.log(' llistaAlumnes', res);
});
推荐阅读
- javascript - TypeError:无法读取 null 的属性“值”| 反应js |
- ios - 如何拦截地图视图的平移和缩放(Swift 4)
- c - 树视图更改项目图像的颜色
- javascript - 在 VUE 上添加自定义 service worker
- java - Java Jframe ICONFIED 关闭失败
- php - PHP MySQL select all matching rows ans echo another table rows
- python - python程序中的错误。“预期二维数组,但得到一维数组”
- r - Unable to run parameter tuning for XGBoost regression model using caret
- angular - 角度 6 中的图像尺寸验证
- spring - 如何在spring boot application.yml中同时配置mongodb和postgres?