面对使用$ .when()。then()函数的问题

时间:2015-08-13 07:31:18

标签: javascript jquery ajax

我需要确保仅在执行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,
           ....

     });
  }

1 个答案:

答案 0 :(得分:3)

您可以在确保调用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代码。