我正在尝试对服务器进行 jsonp 调用,代码如下所示:
功能我的回调(数据){
变种自我=这个;
var currentId = data.ID;
if(currentId == self.latestId){
console.log("最新请求响应,做点什么");
self.latestId = new Date().getTime();
} 别的 {
console.log("旧请求已响应,所以我们不在乎");
}
};
函数 makeCall() {
变种自我=这个;
self.latestId = new Date().getTime();
var url = serverUrl + "&ID="+ self.latestId;
$.ajax(网址,{
数据类型:“jsonp”,
超时:10000,
缓存:真,
jsonp:"回调",
jsonpCallback:“我的回调”,
错误:函数(id){
返回函数(){
如果(id == self.latestId){
console.log("latest request errored out");//可能是由于超时
self.latestId = new Date().getTime(); // 更新 latestid 所以 mycallback 忽略这个请求
}
别的 {
console.log("旧请求出错,所以我们不再关心");
}
}
}(self.latestId)
});
};
来自服务器的响应类似于 myCallback({some_data...});
当只有一个请求被触发时,它按预期工作,但是当我用相同的数据触发 4-5 个请求时,ID 控制既不会转到 myCallback 也不会出错,而服务器及时成功响应。这不会始终如一地发生,因此看起来像是一个同步问题。在进行多个查询时使用命名回调是否会出现任何同步问题。如果有多个查询,只有最后一个应该获胜,但看起来不像在这里工作。由于每个请求的回调名称相同,这可能是一个问题吗?
我对这里发生的事情一无所知,有人遇到过这样的事情吗?
编辑:看起来这与提到的并行请求的回调名称有关jQuery 中的并行 JSONP 请求不会触发多个“回调事件”?