我需要确保仅在执行getValue()后才调用SetValueForVariable()。我无法修改BindValue()SetValueForVariable()

我尝试了$.when(BindValue()).then(getValue());。 (因为我无法更改已经存在的流程)
它有时会起作用,但有时会显示先前设置的值。

我需要在$(document).ready()上调用getValue。如何确保仅在执行getValue()之后调用SetValueForVariable()

//This function is inturn making call to SetValueForVariable() which is written in another file
//Cannot Change this
  function BindValue() {

    SetValueForVariable()

  }

  function getValue()
  {
    $.ajax({
    url: getRoutePath("GetPath/GetPath1"),
    type: "GET",
    async: true,
    success: function (data) {
    debugger;
        data = JSON.parse(data)
        $('#txtBox').text(data.Count);

        });
   }


//Written in another file
//Cannot change this function
function SetValueForVariable() {


//this fucntion is making server call the server method sets value of a Session Variable
   $.ajax({
   url: getRoutePath("SetPath/SetPath1"),
   type: "GET",
   async: true,
           ....

     });
  }

最佳答案

您可以重新定义BindValue,在确保已调用BindValue之后,在新定义中调用原始的getValue

伪代码

 var originalBindValue = BindValue;

 BindValue = function() {
      if getValue has been called
           originalBindValue();
      else
           call getValue and then originalBindValue() in getValue success / failure callback
 }


我认为这可以解决您无法修改BindValue限制的问题-您实际上不需要在此处访问BindValue代码。

09-16 14:51