Aquí está el código donde uso la confirmación de eliminación. Quiero agregar Manejo de errores. Si no elimina los datos, entonces puedo manejar el error.
confirmPopUp(){ Swal.fire({ title: 'Are You Sure?', text: 'Deleting Service Team Detail', icon: 'warning', showCancelButton: true, confirmButtonText:('Yes, delete it'), cancelButtonText: 'No, Keep it' }).then((result) => { if(result.value){ this.deleteServiceTeamById(40); Swal.fire( 'Deleted!', 'Your imaginary File has been Deleted', 'success' ) } else if (result.dismiss === Swal.DismissReason.cancel){ } }) }Quiero agregar una solución similar a esa pero no puedo entender cómo agregar esto en mi código
Ejemplo:
that.http.get(url, {"headers": headers}) .map(res => res) .subscribe(data => { console.log(data); if (data.status === 200) { resolve(); } else { reject(data.status); } }) })Ambas son tareas asíncronas, lo que significa que deben esperar a que la tarea ejecute cualquier código después de eso,
hay varias formas de manejar esto, pero una de las más fáciles que puedo sugerir es esta (con las modificaciones que hice): Importante: haré esta sugerencia basándome en los fragmentos de código dados, esto no significa que esta sea la única solución .
Lógica de solicitud Http (basada en promesas):
/** * the Http delete request to the API * */ deleteHttpRequest(url, headers){ return new Promise((resolve,reject) => { this.http.get(url, {"headers": headers}) .map(res => res) // .map in this case has no sense you can remove it .subscribe( data => { console.log(data); if (data.status === 200) { resolve(); } else { reject(data.status); } }, serverError => { reject(serverError.error); // basing on HttpResponseError } ); }); } }Confirmar ventana emergente
/** * Confirm before delete */ confirmPopUp(confirmCallBack, cancelCallback){ Swal.fire({ title: 'Are You Sure?', text: 'Deleting Service Team Detail', icon: 'warning', showCancelButton: true, confirmButtonText:('Yes, delete it'), cancelButtonText: 'No, Keep it' }).then((result) => { if(result.value){ confirmCallBack(); // <======= Here we will execute Http request } else if (result.dismiss === Swal.DismissReason.cancel){ cancelCallback(); // <======== Here you can do whatever you want after canceling your delete action. } }) }Pon todo en uno:
/** * Call popup confirmation then execute logic basing on confirmation status (confirm : execute http Request, cancel: do whatever you want) */ executeHttpAndGetResult() { this.confirmPopUp( () => { // when confirmed we will call deleteHttpRequest (confirmCallBack) this.deleteHttpRequest(url, headers) .then( res => { // when delete successed Swal.fire('Deleted!','Your imaginary File has been Deleted', 'success'); .catch( // catch will be called whenever data.status !== 200 or there is a server Error returned. error => { // display an error popup or whatever } ); }, // when confirmation was canceled what we will do (cancelCallback) () => { // @todo } ); }