Я предлагаю вам использовать мини-сервер для запуска таких приложений на локальном хосте (если вы не используете какой-либо встроенный сервер).
Вот что очень просто настроить и запустить:
https://www.npmjs.com/package/tiny-server
Попробуйте сделать это внутри catch,
let mysql=require('mysql')
query(sql,args,count=0){
let con=mysql.createConnection(configs[this.config])
return new Promise((resolve,reject)=>{
con.query(sql,args,(e,r)=>{
if(e){
if(e.code=='ER_CON_COUNT_ERROR'){
reject(e)
}
r=false
}
con.end(e=>{
return resolve(r)
})
})
}).catch(e=>{
//want to delay this call
return new Promise((resolve,reject)=>{
setTimeout(()=>{
this.query(sql, args,count+1).then(resolve).catch(reject);
},2000);
});
})
}
Не знаете, зачем вам нужен бесконечный рекурсивный вызов во время исключения. Вы должны изменить свой дизайн, чтобы ограничить повтор.
Во всяком случае для вышеуказанного сценария ниже код может помочь
let mysql=require('mysql')
query(sql,args,count=0){
return new Promise((resolve,reject)=>{
let query_data = () => {
let con=mysql.createConnection(configs[this.config])
con.query(sql,args,(e,r)=>{
if(e){
if(e.code=='ER_CON_COUNT_ERROR'){
reject(e)
}
r=false
}
con.end(e=>{
return resolve(r)
})
})
}
try {
query_data();
} catch(e) {
// statements
console.log(e);
setTimeout(query_data, 3000);
}
})
}
query
, который имеет хотя бы один сбой, приведет к результату undefined
, а не к значению, разрешенному resolve(r)
– Jaromanda X
13 July 2018 в 08:36
.catch(reject)
– Jaromanda X 13 July 2018 в 06:58let con=mysql.createConnection(configs[this.config])
. WDYT? – Chathura Widanage 13 July 2018 в 07:03query
, поэтому я не уверен, что он вообще – Jaromanda X 13 July 2018 в 08:37