0
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;
}
}
如在上面的代碼。 如果在發送函數時發生錯誤,prepare_to_send函數不會將全局變量InProgress更改爲false,而是使用_callback和prepare_to_send中的catch沒有運行。運行從外部嵌套捕獲嘗試
這是可能的,而不改變發送功能?
不,你需要改變這種或那種方式發送功能。雖然你真的應該重新評估你的整個方法 – musefan
你可能會從發送函數返回一個值,並相應地採取行動。 – teroi
您可能希望send函數使用兩個回調函數,一個成功回調函數和一個錯誤回調函數。在可能拋出錯誤的代碼之後,調用catch塊中的錯誤回調以及try塊中的成功回調。 –