我目前正在开发纯JS / Jquery应用程序并遇到了问题。
方案
我们有一个带有一系列ID的类。并通过对Parse.com数据库的Ajax调用来构建自身。构建之后,它会将一些数据(Id,Name,...)附加到<div>
列表,弹出列表的新ID并调用其自身,直到阵列中没有更多ID。结果是一个带有所有构建对象列表的DIV。
这是伪代码中的类
function classSomething(ListOfIds,...){
var aListId= ListOfIds.pop();
$.ajax({
url: '<secret URL to Parse Database>' + aListId,
dataType: 'json',
async : true,
success: function(response) {
this.id = response.id;
this.name = response.name;
this.address = response.Address;
...
var innerHTML = '<li><div class="aclassObject">'+ this.id + ... + '</div></li>';
$('#TheList').append(innerHTML)
if(ListOfIds.length >0){
new classSomething(ListOfIds,...)
}
}
}
问题 问题是列表有时会有重复的元素。不幸的是,当我调试JS时,它在100%的时间内完美运行,但是当正常执行时它将具有“随机”重复。
答案 0 :(得分:0)
但是,如果ajax调用返回的时间比另一个更长,该怎么办?因为它都是异步的,你可以发送一个没有ID的,但是返回一个前一个,它将把它交还(不知道你刚删除它)。这是一些伪代码,也许是为了激发想法。
def func(p1, p2, kw1=None, errorstate=None):
if errorstate:
do_error_path()
return
def decorator(func):
def _decorator(request, *args, **kwargs):
if condition:
return func(request, *args, **kwargs)
else:
kwargs = kwargs.copy()
kwargs['errorstate'] = LimitReached()
return func(request, *args, **kwargs)
return _decorator