【发布时间】:2022-01-26 07:18:58
【问题描述】:
带有if条件的部分代码不会被执行,父函数会在promise之后执行,但我不明白为什么
let sql = `SELECT *
FROM ${table}
WHERE trader = '${trader}'
AND pair = '${data.symbol}'`;
console.log(sql)
let resp = await new Promise((resolve, reject) => {
db.all(sql, function (err, rows) {
console.log("err2")
console.log(err)
console.log("rows2")
console.log(rows)
return resolve(rows)
})
})
if (resp[0]) { // <------- this will be executed after
if (data.amount > resp[0].amount) {
console.log('amount cambiato, comprato')
// BUY Position
await updatePosition(data, trader, 'buy');
}
if (data.amount < resp[0].amount) {
console.log('amount cambiato, sellato')
// BUY Position
await updatePosition(data, trader, 'sell');
}
if (data.amount == resp[0].amount) {
// BUY Position
console.log('amount IDENTICO');
await setCheckedTraderCoin(trader, data.symbol)
}
}
为什么会这样?
【问题讨论】:
-
您忘记添加调用此函数的代码。具体来说,你在父函数中等待这个函数吗?
-
仅供参考,您包装的
db.all()函数根本没有错误处理。换句话说,你在默默地忽略错误,并且应该在错误时拒绝承诺。
标签: node.js