递归jquery ajax
我希望我的函数处理结果,然后从递归jquery ajax,jquery,ajax,recursion,Jquery,Ajax,Recursion,我希望我的函数处理结果,然后从done回调调用自己 function geocode(id) { console.log(id + ' geocode'); $.ajax({ url: '/customers/' + id + '/geocode', dataType: 'json', data: { id: id, } }).done(function() { var
done
回调调用自己
function geocode(id) {
console.log(id + ' geocode');
$.ajax({
url: '/customers/' + id + '/geocode',
dataType: 'json',
data: {
id: id,
}
}).done(function() {
var newID = id++;
console.log(id + ' done.');
geocode(newID);
});
}
但这并不是递增的,比如说,如果我从1开始,它就会一直循环到2。我知道从ajax返回数据是件痛苦的事,但我还没有完全理解其中的细微差别在将变量设置为
newId
的值之前,需要先增加变量:
function geocode(id) {
console.log(id + ' geocode');
$.ajax({
url: '/customers/' + id + '/geocode',
dataType: 'json',
data: {
id: id,
}
}).done(function() {
console.log(id + ' done.'); // show this before incrementing
var newID = ++id; // note the operator order here
geocode(newID);
});
}
您的id在第一次迭代时为1,在第二次(以及第三次、第四次等)迭代时为1,并且您从不更新其值 试试这个:
function geocode(id) {
console.log(id + ' geocode');
$.ajax({
url: '/customers/' + id + '/geocode',
dataType: 'json',
data: {
id: id,
}
}).done(function() {
id = id++;
console.log(id + ' done.');
geocode(id);
});
}
你到底想要什么?您想从ajax请求中得到响应吗?这在逻辑上与OP当前拥有的内容相同。他不需要上下文吗?可能,这取决于
id
的范围,以及它在代码中的其他地方的使用情况(此处未显示)。@mplungjan为什么,设置了正确的上下文,因为我可以看到它工作得很好。我需要进一步研究一下操作符,我没有意识到I++
和++I
console.log(id+'done')之间会有区别代码>应在预增量之前设置,以获得较旧的值