inProgress = false;
//async function which send value to device
function send(_callback){
try{
// code that generate error
_callback();
}catch(err){
console.log("_callback doesn't start");
}
}
function prepare_to_send(){
try{
inProgress= true;
send(function(){
send(function(){ // isn't runned, because was err inside send
inProgress = false;
})
});
}catch(err){
inProgress = false;
}
}
Comme dans le code ci-dessus. Si l'erreur était dans la fonction d'envoi, la fonction prepare_to_send ne modifiait pas la variable globale InProgress en false, beacuse _callback et catch de prepare_to_send ne sont pas exécutées. Est-ce possible sans changer la fonction d'envoi?Exécution de la capture externe à partir de l'essai imbriqué
Est-ce possible?
Non, vous devez changer envoyer fonction d'une manière ou d'une autre. Bien que vous deviez vraiment réévaluer votre approche entière – musefan
Vous pourriez retourner une valeur de la fonction d'envoi et agir en conséquence. – teroi
vous souhaitez probablement que la fonction d'envoi utilise deux rappels, un rappel réussi et un rappel d'erreur. Appelez le callback d'erreur du bloc de catch et le callback de succès du bloc try après le code qui peut lancer une erreur. –