我有以下异步方法:
alreadyLoaded: async function (id) {
const pool = await poolPromise;
return pool.request()
.input('idParameter', id)
.query('SELECT count(*) AS value FROM dbo.partidos WHERE id=@idParameter')
.then(result => {
console.log(result.recordset[0].value)
result.recordset[0].value > 0
}).catch(function(err) {
console.log(err.message);
});
又调用了一个:
processMatches: function(payload) {
payload.matches.forEach(p => {
if(partidosRepository.alreadyLoaded(p.id))
{
console.log("El partido ya fue cargado.");
return;
}
alreadyLoaded
方法检查数据库中是否已插入某些记录,并在另一个方法中调用该记录以进行验证。这里的问题是processMatches
方法在alreadyLoaded
完成当前记录之前继续处理记录。
我在这里对承诺的管理有误,有人可以帮我解决这个问题吗?
这是数据库连接:
const poolPromise = new sql.ConnectionPool(config)
.connect()
.then(pool => {
console.log('Connected to localhost '+ config.database +' database');
return pool;
})
.catch(err => console.log('Database connection failed. Error: ', err));
module.exports = {
sql, poolPromise
}
答案 0 :(得分:0)
为什么不建立这样的if语句
R: ff
G: 0
B: 0
R: ff
G: 0
B: 0
R: ff
G: 0
B: 0
R: 0
G: ff
B: 0
R: 0
G: ff
B: 0
R: 0
G: ff
B: 0
R: 0
G: 0
B: ff
R: 0
G: 0
B: ff
R: 0
G: 0
B: ff
还请记住,您此处未返回布尔值
R: ff
G: 0
B: 0
R: ff
G: 0
B: 0
R: ff
G: 0
B: 0
R: 0
G: 0
B: 0
R: 0
G: ff
B: 0
R: 0
G: ff
B: 0
R: 0
G: ff
B: 0
R: 0
G: 0
B: 0
R: 0
G: 0
B: ff
R: 0
G: 0
B: ff
R: 0
G: 0
B: ff
R: 0
G: 0
B: 0