JQuery JSONP Ajax 请求的回调在什么范围内执行?
In what scope is the callback from a JQuery JSONP Ajax request being executed?
假设我多次使用此函数并且响应延迟 - 我会冒回调冲突的风险吗?回调 运行 是否在全局范围内?我希望 运行 多个 Ajax 并行调用。
<script>
var getFeature = function (id) {
$.ajax({
type: 'GET',
url: "http://myserver.com/feature.aspx",
data: {id:id},
jsonpCallback:"GetFeatureCallback",
contentType: "application/json",
dataType: 'jsonp'
}).done(function (data) {
//do something with data
});
}
getFeature(1);
getFeature(2);
</script>
回调函数的作用域不是 global.Callback 函数将具有单独的作用域,因为 function.The 在回调函数中声明的变量无法从回调函数外部访问。
在javascript中,作用域会在词法时间定义,所以回调函数中的变量会在ajax查询之前被赋值给作用域completed.Values变量只会在 ajax 查询完成后执行期间分配。
当一个函数被多次调用时,每次在 javascript 中使用相同的变量内存位置,这里同样适用 too.But 回调函数的执行将是同步的,而不是 parallel.And 回调函数的执行顺序会是jquery returns.So 不会发生碰撞的顺序。
是的,GetFeatureCallback
需要是 JSONP 才能工作的全局变量。如果您同时 运行 getFeature
多次,它们将在使用静态名称时发生冲突。如果您不为 jsonpCallback
传递值,jQuery 将在每次调用时自动动态创建一个新的唯一名称。
当服务器实施不当且不提供选择回调名称的方法时,并发请求将全部调用相同的函数而没有任何好的区分它们的方法。如果响应包含足够的信息以将其与查询相关联,这样做可能仍然可行,但通常您最好对请求进行排序。
假设我多次使用此函数并且响应延迟 - 我会冒回调冲突的风险吗?回调 运行 是否在全局范围内?我希望 运行 多个 Ajax 并行调用。
<script>
var getFeature = function (id) {
$.ajax({
type: 'GET',
url: "http://myserver.com/feature.aspx",
data: {id:id},
jsonpCallback:"GetFeatureCallback",
contentType: "application/json",
dataType: 'jsonp'
}).done(function (data) {
//do something with data
});
}
getFeature(1);
getFeature(2);
</script>
回调函数的作用域不是 global.Callback 函数将具有单独的作用域,因为 function.The 在回调函数中声明的变量无法从回调函数外部访问。
在javascript中,作用域会在词法时间定义,所以回调函数中的变量会在ajax查询之前被赋值给作用域completed.Values变量只会在 ajax 查询完成后执行期间分配。
当一个函数被多次调用时,每次在 javascript 中使用相同的变量内存位置,这里同样适用 too.But 回调函数的执行将是同步的,而不是 parallel.And 回调函数的执行顺序会是jquery returns.So 不会发生碰撞的顺序。
是的,GetFeatureCallback
需要是 JSONP 才能工作的全局变量。如果您同时 运行 getFeature
多次,它们将在使用静态名称时发生冲突。如果您不为 jsonpCallback
传递值,jQuery 将在每次调用时自动动态创建一个新的唯一名称。
当服务器实施不当且不提供选择回调名称的方法时,并发请求将全部调用相同的函数而没有任何好的区分它们的方法。如果响应包含足够的信息以将其与查询相关联,这样做可能仍然可行,但通常您最好对请求进行排序。