2015-06-11 90 views
-1

我:为什么下一行在函数返回值之前执行?

var newID = saveNewGame(newName, newShortName, "1"); 
alert (newID + " Here"); 

function saveNewGame(newName, newShortName, myNumber) { 
    myRequest.open("POST", "savegame.php", false); 
    if (myRequest.status === 200) { 
      var myNewID = myRequest.responseText; 
      alert(myNewID + " There"); 
      return myNewID; 
} 

跑时,我看到一个弹出消息:“未定义这里”,接着弹出一个消息:“5有”。 - 添加更复杂的代码。该函数执行XMLHttpRequest(myRequest) - 但设置为Async = false。

我认为'5 There'应该先弹出,'undefined Here'应该说'5 Here',然后弹出第二个。为什么这样做呢?

注:我剪断了XML设置的东西

+0

它的工作原理与它应该完全一样 - > ** http://jsfiddle.net/yv7843c4/1/** – adeneo

回答

3

当我运行你的代码,你显示它(在在的jsfiddle这里http://jsfiddle.net/jfriend00/a5da81kp/你的答案newNamenewShortName的定义,它不这样做,你说什么。它在事实上,它显示了两个警报与合法的字符串就像人们所期望的

它显示:

5 There 
5 Here 

所以,它很可能是你真正的代码是不是那样简单你在你的问题中的代码。我猜你可能在某处有一些异步代码,确实会改变执行顺序。但是你的问题中的假设根本不正确。该代码按照预期的方式工作。

+0

添加了更多代码 - asynchornous必须是密钥,但在.open调用中设置为FALSE –

相关问题