我有:
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;
}
跑步时,我收到一条弹出消息:' undefined Here'然后是弹出消息:' 5那里'。 - 添加了更复杂的代码。该函数执行XMLHttpRequest(myRequest) - 但设置为Async = false。
我认为' 5那里'应首先弹出并且未定义此处'应该说' 5这里'并弹出第二个。为什么这样做呢?
注意:我剪掉了XML设置内容
答案 0 :(得分:3)
当我在你显示它时运行你的代码(在你的答案中使用newName
和newShortName
定义{jsFiddle http://jsfiddle.net/jfriend00/a5da81kp/时,它不会像你说的那样做事实上,它会像人们期望的那样用合法的字符串显示这两个警报。
它显示:
5 There
5 Here
因此,您的真实代码似乎不像您在问题中所拥有的代码那么简单。我猜你可能在某处确实有一些异步代码确实会改变执行顺序。但你问题中的假设是不正确的。该代码可以按预期工作。