Javascript Then()承诺无法异步工作
我正试图找出如何异步创建这个Firestore集合。我现在把它放在递归函数中,因为for循环也不起作用。我想通过使用递归函数,当我想重新启动函数时,它会给我更多的控制,但它仍然不起作用。请帮忙。我知道这对大多数人来说都很容易解决Javascript Then()承诺无法异步工作,javascript,google-cloud-firestore,async-await,Javascript,Google Cloud Firestore,Async Await,我正试图找出如何异步创建这个Firestore集合。我现在把它放在递归函数中,因为for循环也不起作用。我想通过使用递归函数,当我想重新启动函数时,它会给我更多的控制,但它仍然不起作用。请帮忙。我知道这对大多数人来说都很容易解决 const fakeIt=async()=>{ 控制台日志(“A”); var itemsCreated=1; 项目(0,项目已创建); 异步函数项(num,itemsCreated){ 如果(num{ 控制台日志(“C”); 项目(数量+1,项目已创建) }); }否
const fakeIt=async()=>{
控制台日志(“A”);
var itemsCreated=1;
项目(0,项目已创建);
异步函数项(num,itemsCreated){
如果(num{
控制台日志(“C”);
项目(数量+1,项目已创建)
});
}否则{
控制台日志(“完成”);
}
}
}
数组(2).fill(0).forEach(fakeIt);
我得到的打印结果如下:
A
B
A
B
C
Done
C
Done
我需要以下结果:
A
B
C
A
B
C
Done
我通过对fakeIt循环使用递归函数来解决这个问题。我摆脱了所有的异步等待,一切都很完美。感谢那些发表上述评论的人
function fakeIt(number, count) {
if (number < count) {
console.log("A");
var itemsCreated = 1;
items(0, itemsCreated);
function items(num, itemsCreated){
if(num < itemsCreated){
console.log("B");
db.collection('items').add({
active: true
}).then(async (item) => {
console.log("C");
items(num + 1, itemsCreated)
});
}else{
fakeIt(number+1, count)
}
}else{
console.log("Done");
}
}
fakeIt(0, 2)
函数fakeIt(数字、计数){
如果(数量<计数){
控制台日志(“A”);
var itemsCreated=1;
项目(0,项目已创建);
功能项(num,itemsCreated){
如果(num{
控制台日志(“C”);
项目(数量+1,项目已创建)
});
}否则{
fakeIt(数字+1,计数)
}
}否则{
控制台日志(“完成”);
}
}
fakeIt(0,2)
你应该等待fakeIt
吗?你在aysnc函数项中有一个输入错误(…
,它应该是异步的而不是aysnc
。另外,如果你也在使用等待,那么你为什么要使用呢?你也没有将任何东西传递给fakeIt
,这是数组。fill()
bit只运行两次?不应该同时使用wait和then:)@Noah-我想我需要等待fakeIt。这可能就是问题所在。