如何将xhr响应分配给变量?

时间:2014-06-11 04:30:10

标签: javascript asynchronous dojo xmlhttprequest internet-explorer-9

我在下面编写了这段代码,它非常简单,它的剂量是xhr请求,然后将响应分配给变量。

function myFunction(url){

  var myVariable;

  var myRequest = dojo.xhrGet({

      url: url,
      handleAs: "json"

  }).then(requestSucceeded, requestFailed);


  function requestSucceeded(response){

      myVariable = response;
      console.log('Value from the original response: ' + myVariable);
  }

  function requestFailed(error){

      console.log("Error: ", error.message);
  }   

  console.log('Value that will be returned to browser: ' + myVariable);
  return myVariable;

}

它在Chrome,Firefox和IE 10中运行良好,我可以从控制台看到两条消息:

  

原始回复的值:某个值

     

将返回给浏览器的值:某个值

但问题是当我在IE 9或8中运行它时,它不会将响应分配给xhr对象之外的变量,我看到来自控制台的两条消息如下:

  

将返回给浏览器的值:undefined

     

原始回复的值:某个值

我知道它是由JavaScript的非阻塞性质引起的,因此即使响应尚未进入回调,代码仍在继续前进,这使得代码末尾的myVariable未定义。

但是我无法理解为什么它在Chrome和Firefox中正常运行,为什么Chrome会等到收到回复然后继续执行其余的代码。

所以我的问题是如何让它在IE 9中运行?

非常感谢!

0 个答案:

没有答案