如何尝试直到解决(JavaScript中的承诺) 最近我遇到了一个连接问题,使得我的代码和数据库之间的连接不稳定…
如何尝试直到解决(JavaScript中的承诺) 最近我遇到了一个连接问题,使得我的代码和数据库之间的连接不稳定…,javascript,node.js,asynchronous,promise,timeout,Javascript,Node.js,Asynchronous,Promise,Timeout,正如您可能已经注意到的,这会创建一个连接请求错误,我需要一种方法使我的承诺继续尝试,直到解决为止 我的代码: 重要提示:上面的代码在一个while()中,它可以更改每个循环中的/*查询*/我没有办法测试这一点,但请尝试使用递归函数执行类似操作: var results=sqlQuery(sql) 函数sqlQuery(sql){ 返回新承诺((解决、拒绝)=>{ query(/*query*/,函数(错误、结果、字段){ 如果(错误){ 返回sqlQuery(sql),然后返回(res=>res
正如您可能已经注意到的,这会创建一个连接请求错误,我需要一种方法使我的承诺继续尝试,直到解决为止
我的代码:
重要提示:上面的代码在一个while()中,它可以更改每个循环中的/*查询*/我没有办法测试这一点,但请尝试使用递归函数执行类似操作:
var results=sqlQuery(sql)
函数sqlQuery(sql){
返回新承诺((解决、拒绝)=>{
query(/*query*/,函数(错误、结果、字段){
如果(错误){
返回sqlQuery(sql),然后返回(res=>resolve(res));
}
解决(结果)
})
})
}
尽管我不得不说一遍又一遍地重做并不是最好的主意…我没有办法测试它,但是可以尝试这样的方法,使用递归函数:
var results=sqlQuery(sql)
函数sqlQuery(sql){
返回新承诺((解决、拒绝)=>{
query(/*query*/,函数(错误、结果、字段){
如果(错误){
返回sqlQuery(sql),然后返回(res=>resolve(res));
}
解决(结果)
})
})
}
虽然我不得不说一遍又一遍的重做并不是最好的主意
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)
})
})
}