问题是查询是异步内部循环,我需要在for和所有查询完成时执行某些操作,如果我在查询尚未执行之后执行某些操作
app.post('/consulta',(req,res)=>{
var data = req.body.frase;
let consulta;
let respuesta = [];
for(let i=1;i<data.length;i++){
consulta = `SELECT * FROM imagen WHERE nombre = "${data[i-1] +' '+ data[i]}"`;
connection.query(consulta, function (error, results, fields) {
if (error) throw error;
if(results.length > 0){ // Si existe una seña que tenga 2 palabras
data[i-1] = data[i-1] +" "+data[i]; // Unidos jamas seran vencidos
data.splice(i, 1);
}
});
}
})
答案 0 :(得分:1)
尝试这样做:
app.post('/consulta',(req,res)=>{
var data = req.body.frase;
let consulta;
let respuesta = [];
query(data).then(result => {
// implement your success case...
}).catch(err => {
//throw exception here...
});
});
function query(data){
return new Promise((resolve, reject) => {
var counter = 0;
if (data.length > 0){
for(let i=1;i<data.length;i++){
consulta = `SELECT * FROM imagen WHERE nombre = "${data[i-1] +' '+ data[i]}"`;
connection.query(consulta, function (error, results, fields) {
if (error) reject(error); //terminate the promisse...
if(results.length > 0){ // Si existe una seña que tenga 2 palabras
data[i-1] = data[i-1] +" "+data[i]; // Unidos jamas seran vencidos
data.splice(i, 1);
}
counter++;
if (counter >= data.length){
resolve("Everything OK");
}
});
}
} else {
reject("There are no data"); //terminate the promise...
}
});
}