【发布时间】:2017-12-12 14:35:41
【问题描述】:
编辑:使用承诺更改了答案所建议的代码。它在Added all tags 之前打印,然后是各种Found
我有以下代码用 Firebase 中的一些键填充数组:
var userTags = [];
var arrayPromises = [];
user_pref.once('value', function(preferenze){
preferenze.forEach(function(t){
ref.once('value', function(tags){
arrayPromises.push(arrayPromises.push(new Promise(function (resolve, reject) {
tags.forEach(function (t1){
if(t.key == t1.key){
console.log("Found " + t1.key)
}
return false;
})}));
})
return false;
})
})
Promise.all(arrayPromises).then(()=>{
console.log("Added all tags")
})
}
我添加了then 子句以确保在填充数组后调用findPoiByTagis 方法,但显然then 中的代码在其余部分之前执行。事实上,消息lenght 2: 是在另一条消息Lenght 之前打印的,其结果是它首先打印“0”,然后在填充数组时打印正确的长度。
编辑:它打印数组的长度等于 forEach 迭代的次数,因此return false 语句不会中断循环。
我一直用这种方法等待指令完成,为什么现在不起作用?我错过了什么吗?
【问题讨论】:
标签: javascript firebase firebase-realtime-database