Javascript 如何从承诺中返回值 var座位; var emp=db.collection('BookedTicketData').get()。然后((快照)=>{ snapshot.docs.forEach((doc)=>{ var data=doc.data() console.log(data.AllSeat); seat=data.AllSeat }) }) 座位费((val)=>{ 对于(i=1;i
您可以尝试在Javascript 如何从承诺中返回值 var座位; var emp=db.collection('BookedTicketData').get()。然后((快照)=>{ snapshot.docs.forEach((doc)=>{ var data=doc.data() console.log(data.AllSeat); seat=data.AllSeat }) }) 座位费((val)=>{ 对于(i=1;i,javascript,firebase,promise,google-cloud-firestore,Javascript,Firebase,Promise,Google Cloud Firestore,您可以尝试在中移动逻辑,然后: var seat; var emp = db.collection('BookedTicketData').get().then((snapshot) => { snapshot.docs.forEach((doc) => { var data = doc.data() console.log(data.AllSeat); seat = data.AllSeat }) }) seat.f
中移动逻辑,然后:
var seat;
var emp = db.collection('BookedTicketData').get().then((snapshot) => {
snapshot.docs.forEach((doc) => {
var data = doc.data()
console.log(data.AllSeat);
seat = data.AllSeat
})
})
seat.forEach((val) => {
for(i = 1; i<=37;i++){
if(val == i){
html += `
<input type="checkbox" class="dn checkme" name="s-size" id="${j}" value="${j}"/>
<label for="${j}" class="col-2 br-pill f7 m-1 btn text-dark bg-white border-dark grow">${j}</label>
`
}
}
})
document.getElementById('loader').innerHTML = html;
var emp=db.collection('BookedTicketData').get()。然后((快照)=>{
var席位;
snapshot.docs.forEach((doc)=>{
var data=doc.data()
console.log(data.AllSeat);
seat=data.AllSeat
})
返回座位;
}).然后(座位=>{
座位费((val)=>{
让html=''
对于(i=1;i使用async Wait语法来解析您的承诺。实际上,您的代码中发生的是seat。在为seat分配一个值之前,会运行forEach,这就是为什么它是未定义的。请像这样更改您的代码
var emp = db.collection('BookedTicketData').get().then((snapshot) => {
var seat;
snapshot.docs.forEach((doc) => {
var data = doc.data()
console.log(data.AllSeat);
seat = data.AllSeat
})
return seat;
}).then(seat => {
seat.forEach((val) => {
let html = ''
for (i = 1; i <= 37; i++) {
if (val == i) {
html += `
<input type="checkbox" class="dn checkme" name="s-size" id="${j}" value="${j}"/>
<label for="${j}" class="col-2 br-pill f7 m-1 btn text-dark bg-white border-dark grow">${j}</label>
`
}
}
document.getElementById('loader').innerHTML = html;
})
})
确保在异步函数中使用wait,否则它将无法工作
我再次应用了此代码,但现在复选框不可选择
var seat;
var emp = await db.collection('BookedTicketData').get();
var emp=db.collection('BookedTicketData').get()。然后((快照)=>{
snapshot.docs.forEach((doc)=>{
var data=doc.data()
seat=data.AllSeat
})
}).然后(()=>{
对于(j=1;j{
var data=doc.data()
console.log(data.AllSeat);
seat=data.AllSeat
})
现在可以了
座位费((val)=>{
对于(i=1;我可以回答你的问题吗?你不能,也不必。将逻辑移到中,然后
。尝试使用async/await
让我试试这个method@DivyanshuBhaskar您的复选框现在是否工作?您是否可以检查复选框是否根据您的代码正确插入到dom中。您是否可以检查checK框是否正确?是的,现在复选框工作正常,但我已通过不同的方法完成了操作问题出在哪里?
var emp = db.collection('BookedTicketData').get().then((snapshot) => {
snapshot.docs.forEach((doc) => {
var data = doc.data()
seat = data.AllSeat
})
}).then(() => {
for (j = 1; j <= 37; j++) {
html += `
<input type="checkbox" class="dn checkme" name="s-size" id="${j}" value="${j}"/>
<label for="${j}" class="col-2 br-pill f7 m-1 btn text-dark bg-white border-dark grow">${j}</label>
`
}
document.getElementById('loader').innerHTML = html;
emp.docs.forEach((doc) => {
var data = doc.data()
console.log(data.AllSeat);
seat = data.AllSeat
})
this will work now
seat.forEach((val) => {
for(i = 1; i<=37;i++){
if(val == i){
html += `
<input type="checkbox" class="dn checkme" name="s-size" id="${j}" value="${j}"/>
<label for="${j}" class="col-2 br-pill f7 m-1 btn text-dark bg-white border-dark grow">${j}</label>
`
}
}
})
document.getElementById('loader').innerHTML = html;