Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何尝试直到解决(JavaScript中的承诺) 最近我遇到了一个连接问题,使得我的代码和数据库之间的连接不稳定…_Javascript_Node.js_Asynchronous_Promise_Timeout - Fatal编程技术网

如何尝试直到解决(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)
      })
   })
}