Código Javascript:
Ver original
var FinalDocument = function () { 'use strict'; var OrderID = ''; var hasInvoice = false; var initReportFinal = function() { OrderID = $('#master-order').val(); var url = '/orders/has-invoice/' + OrderID; var url2 = '/documents/final-document/' + OrderID; var url3 = '/documents/preview/' + OrderID; $('body').on('click', '.subgroups.viewFR', function (event) { // Aquí me está devolviendo "undefined" hasInvoice = checkIfInvoiceExist(url); if(hasInvoice) { $.ajax({ url: url2, beforeSend: function () { $('.ring-label').text('Generating'); $('.bottom-ring-label').css('display', 'block'); }, complete: function () { $('.bottom-ring-label').css('display', 'none'); }, success: function(data) { window.open(url3, '_blank'); } }); } else swal("There's no any invoice generated, so you cannot generate the final document.", "Lien Application", "warning"); }); function checkIfInvoiceExist(url) { $.ajax({ url: url, beforeSend: function () { $('.ring-label').text('Processing'); $('.bottom-ring-label').css('display', 'block'); }, complete: function () { $('.bottom-ring-label').css('display', 'none'); }, success: function (data) { // Hasta aquí se recibe el resultado de la consulta "true o false" console.info('HasInvoice? ' + data.success); return data.success; } }); } } return { init: function () { initChecklistBTN(); initInvoicePreview(); initReportFinal(); } }; }();
He tratado también aunque sea absurdo, sacar fuera del la clase la función checkIfInvoiceExist() pero nada, como era de esperar, el resultado sigue siendo igual.
Me estoy viendo obligado a seguir ejecutando el código dentro de la misma función pero no me interesa pues hay otras funciones que hace uso de la función checkIfInvoiceExist() y dependiendo del resultado hace otras cosas.
Algúna explicación / solución a porqué no me está devolviendo el resultado a la variable cuando sí debería de hacerlo.