weixin_33701294 2015-09-13 12:13 采纳率: 0%
浏览 37

具有回调功能的AJAX

How can we make the asynchronous function stop and wait for the response? I got some solution about getting the value from asynchronous functions from How do I return the response from an asynchronous call? But, I still have more questions about how can we get a value from asynchronous function if we have to pass in some values to the function.

Here, I have 3 functions. First, the asynchronous function.

 function getVal(param,callbackFunc)
 {
     a = function()
     {
       if(a.state==finished)
             callbackFunc(a.response);
     };
 }

This one is the call back function

 handler(result)
 {
    return result;
 }

And, This is where I call the asynchronous function, and also where I got the problem

function core()
{
  for(var i = 0 ; i < 10 ; i ++)
  {
    getVal(g[i],handler);
  }
}

As you can see, the parameter I sent to the getVal function is an array. So, the question is how can we make the getVal function execute the parameters synchronously.

This always give me the result of the last member of array (It seems like the function skips all values from g[0] to g[9].it always returns the value of getVal(g[10],handler)) .

Please help

Thank you.

  • 写回答

2条回答 默认 最新

  • weixin_33721427 2015-09-13 12:34
    关注

    One way to do that is by making ajax request synchorous.

    var xhr =new XMLHttpRequest();
    xhr.open("GET","url", false);
    

    False here will make sure rest of the code isnt ran until havent gotten response.

    Otherwise what i do is make all async requests then upon every response subtract 1 from array.length and check if it's zero. If it is then it means we have gotten all of the responses so then call the callback.

    评论

报告相同问题?