如何尝试直到解决(JavaScript 中的承诺)
How to try until resolve (Promise in JavaScript)
最近我一直面临连接问题,导致我的代码和数据库之间的连接不稳定...
TimeOut Error
您可能已经注意到,这会导致连接请求错误,我需要一种方法让我的 Promise 不断尝试直到解决。
我的代码:
var results = sqlQuery(sql)
function sqlQuery (sql) {
return new Promise((resolve, reject) => {
sql.query(/*query*/, function (error, results, fields) {
if (error) {
console.log(error)
reject(error)
}
resolve(results)
})
})
}
重要提示:上面的代码在 while() 中,它在每个循环中更改 /*query*/
我没有办法对此进行测试,但请使用递归函数尝试这样的操作:
var results = sqlQuery(sql)
function sqlQuery (sql) {
return new Promise((resolve, reject) => {
sql.query(/*query*/, function (error, results, fields) {
if (error) {
return sqlQuery(sql).then(res => resolve(res));
}
resolve(results)
})
})
}
虽然我不得不说一遍又一遍地重做并不是最好的主意...
最近我一直面临连接问题,导致我的代码和数据库之间的连接不稳定...
TimeOut Error
您可能已经注意到,这会导致连接请求错误,我需要一种方法让我的 Promise 不断尝试直到解决。
我的代码:
var results = sqlQuery(sql)
function sqlQuery (sql) {
return new Promise((resolve, reject) => {
sql.query(/*query*/, function (error, results, fields) {
if (error) {
console.log(error)
reject(error)
}
resolve(results)
})
})
}
重要提示:上面的代码在 while() 中,它在每个循环中更改 /*query*/
我没有办法对此进行测试,但请使用递归函数尝试这样的操作:
var results = sqlQuery(sql)
function sqlQuery (sql) {
return new Promise((resolve, reject) => {
sql.query(/*query*/, function (error, results, fields) {
if (error) {
return sqlQuery(sql).then(res => resolve(res));
}
resolve(results)
})
})
}
虽然我不得不说一遍又一遍地重做并不是最好的主意...