函数内容执行顺序不对
function contents execution not in order
我有一个Java脚本函数
function myfunction() {
var url = location.href;
var ajaxRespose;
$.ajax({
type:"GET",
url: url,
cache:false,
dataType: "text",
success: function(response) {
var data = $.parseJSON(response);
ajaxRespose = data;
console.debug("ajaxRespose ==>:"+ajaxRespose);
}
});
console.debug("first ajaxRespose: " +ajaxRespose);
}
return false;
}
在我的控制台(firbug)我得到:
first ajaxRespose: undefined
ajaxRespose ==>:[object Object]
我的问题是,为什么ajax调用在"第一次"console.debug之后执行。PS:我已经简化了函数,(函数工作正常,但问题是在执行顺序)
由于$.ajax()
是异步的,因此事件的顺序如下:
$.ajax(...); // executes AJAX request
console.debug("first ajaxResponse:" + ajaxRespose); // undefined
/* some time later, we receive AJAX response */
// it executes the success function from the original AJAX request
console.debug("ajaxRespose ==>:"+ajaxRespose); // [object Object]
因为AJAX是异步的(因此得名)。在AJAX请求完成之前,记录"first ajaxresponse"的控制台日志正在执行,这就是为什么未定义。然后AJAX请求完成,您得到响应。
这是因为Ajax是异步的....工作发生在"并行"…所以当你的Ajax调用被执行时,其他代码被并行执行…使其工作的唯一方法是在ajax的回调函数中定义它。回调函数在ajax调用完成时执行,从而在其中获得ajaxresponse
相关文章:
- 使用appendChild()动态添加的脚本是按顺序执行还是并行执行
- 如何在angularjs中按顺序执行多数据ng应用程序
- 要按顺序执行的异步代码
- AngularJS:如何按照预定义的顺序执行函数
- 按顺序执行导入的 Javascript 函数
- 无法让 jQuery 以正确的顺序执行代码
- 触发后的 Javascript 顺序执行
- $http.post() angularjs 响应函数未按正确的顺序执行
- 如何按顺序执行 jQuery 函数
- 为什么Javascript不按顺序执行代码
- 对象在循环中运行时未定义,但在按顺序执行时未定义
- 按顺序执行ajax请求的动态编号
- javascript在网络上的顺序执行
- SQL语句是通过PhoneGap'按顺序执行的吗;的Web SQL数据库
- jQuery Deferred和Promise用于同步和异步函数的顺序执行
- 顺序执行js
- 如何按顺序执行承诺数组
- 有没有更好的方法以一定的顺序执行一堆部分异步的jQuery函数
- 如何确保 Dojo 模块按特定顺序执行
- 为什么我的 JavaScript 不能按顺序执行