Javascript 我可以一次返回10条记录吗?在第二个循环中,我可以提取10条不同的记录吗?
这是我用来从Firebase中提取数据并在下面运行循环的代码Javascript 我可以一次返回10条记录吗?在第二个循环中,我可以提取10条不同的记录吗?,javascript,loops,angular,firebase,firebase-realtime-database,Javascript,Loops,Angular,Firebase,Firebase Realtime Database,这是我用来从Firebase中提取数据并在下面运行循环的代码 loadPeople() { return new Promise(resolve => { this.dataProvider.getProducts().subscribe((products) => { this.start; this.products = products; this.AKey = products.pop().$key;
loadPeople() {
return new Promise(resolve => {
this.dataProvider.getProducts().subscribe((products) => {
this.start;
this.products = products;
this.AKey = products.pop().$key;
console.log(products);
for(let person of products) {
this.people.push(person);
}
resolve(true);
});
});
}
doInfinite(infiniteScroll:any) {
console.log('doInfinite, start is currently '+this.start);
this.start+=50;
this.loadPeople().then(()=>{
infiniteScroll.complete();
});
}
}
我没有正确地使用承诺。下面回顾一下如何使用Firebase对承诺进行分页。
loadProducts(){
var products=firebase.database().ref('/products');
产品。一次(“价值”)
.then(功能(捕捉){
var keys=Object.keys(snap.val()).sort();
var pageLength=10;
var pageCount=keys.length/pageLength;
var currentPage=1;
var承诺=[];
var-nextKey;
var查询;
对于(变量i=0;i
请在此处查看:
loadProducts(){
var products = firebase.database().ref('/products');
products.once('value')
.then(function (snap){
var keys = Object.keys(snap.val()).sort();
var pageLength = 10;
var pageCount = keys.length / pageLength;
var currentPage = 1;
var promises = [];
var nextKey;
var query;
for (var i = 0; i < pageCount; i++) {
nextKey = keys[i * pageLength];
console.log('key', nextKey);
query = products.orderByKey().limitToFirst(pageLength).startAt(nextKey);
promises.push(query.once('value'));
}
Promise.all(promises)
.then(function (snaps) {
var pages = [];
snaps.forEach(function (snap) {
pages.push(snap.val());
})
console.log('pages', pages);
Promise.all(pages)
.then(function (ASINs) {
var asins = [];
ASINs.forEach(function (ASIN) {
asins.push(snap.val());
})
console.log('asins', asins);
})
})
});
}