我对逻辑和实现都有疑问,到目前为止谷歌搜索没有使用任何东西。
所以我写了一个小的js脚本来调用它并解析数据,现在我的问题是我用同步调用写了它(即async:false)。这提出了一系列问题,其中一些问题意味着它似乎只适用于chrome而不是其他浏览器。
所以我的问题是:
如何处理异步调用和解析结果的逻辑? - 当我退出电话时,我没有结果,他们稍后会来。我该如何正确使用它们?
我怎样才能使用网络服务,我需要点几次,例如,如果我总共获得10,000个结果,并且该服务一次只返回1,000个。
我对这个问题的这两个方面感到困惑,并希望得到任何帮助。我曾尝试使用ajax和cors,它们都在不同程度上工作,但我不明白如何处理第二部分(一次只得到一部分结果)。
由于“Access-Control-Allow-Origin”原因我最初无法使用async:true,因此有哪些方法可供使用。我无法修改网络服务。
解析处理已经处理,我解析每个单独的xml回复以提取我需要的数据并在稍后阶段处理它。
会欣赏伪代码的回复,我只是开始学习JS,所以不知道它能做什么。
答案 0 :(得分:1)
您可以使用promises:
// calls your web service asynchronously
function request(page) {
return $.ajax({
url: '/xml-service/',
method: 'POST',
dataType: 'json',
data: {
delay: 1,
json: JSON.stringify(ret)
}
});
}
// retrieve all results recursively
function requestItems(page, items) {
return request(page).then(function(data){
if (data.currentPage > data.totalPage) {
return items;
} else {
return requestItems(data.currentPage + 1, items.concat(data.items));
}
});
}
function requestAll(){
return requestItems(1, []);
}
requestAll().done(function(items) {
console.dir(items);
}