Estoy creando una var donde quiero asignarla a una var que obtengo de otra entidad
function SubmitAction(executionContext) { var lookupItem = formContext.getAttribute("alfa_member").getValue()[0].id; var theTotalMembersTravling = formContext.getAttribute("alfa_numberofdependent").getValue(); var remainFlightCredit; debugger; Xrm.WebApi.online.retrieveRecord("contact",lookupItem, "?$select=new_remainstravelcredit").then( function employessPackage(result) { var new_remainstravelcredit = result["new_remainstravelcredit"]; if(new_remainstravelcredit !== null){ if(new_remainstravelcredit > 0) { remainFlightCredit = new_remainstravelcredit; console.log(remainFlightCredit+" This not inside any if condition"); var newRemain = (parseInt(remainFlightCredit)) - (parseInt(theTotalMembersTravling)); console.log(newRemain+ " This in the remain if condition"); var entity = {}; entity.new_remainstravelcredit = newRemain.toString(); Xrm.WebApi.online.updateRecord("contact",lookupItem, entity).then( function success(result) { var updatedEntityId = result.id; }, function(error) { Xrm.Utility.alertDialog(error.message); } ); } if(new_remainstravelcredit <= 0) { Xrm.Utility.alertDialog("You have exceeds the travel credit"); console.log(remainFlightCredit); } } }, function(error) { Xrm.Utility.alertDialog(error.message); } ); console.log(remainFlightCredit); }Así que como resultado en esta línea
remainFlightCredit = new_remainstravelcredit; console.log(remainFlightCredit+" This not inside any if condition");Que dentro de la llamada webapi puedo obtener el valor pero afuera en la función principal al final cuando escribo
console.log(remainFlightCredit); No puedo obtener el valor de remainFlightCredit , ¿tiene alguna sugerencia para resolver este problema?
Este es el comportamiento esperado, ya que se trata de una llamada de promesa (asincrónica), el código fuera de la llamada a la API principal se ejecutará antes de la función de devolución de llamada de éxito employessPackage .
Por lo tanto, el valor remainFlightCredit se asigna después de la última línea de console.log en su código.
Puede colocar un punto de interrupción para depurar y verlo en acción.