我正在尝试对服务器进行 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 请求不会触发多个“回调事件”?