我有一个代码,我从Sharepoint列表中读取记录并将该字段更新为+1。但看起来更新有时比输入值的计算更快完成,所以某些时候记录值不会改变。这是我的代码:
$(function ()
{
$SP().list("TargetList","http://.../sites/Registry/").get(
{
where: "ID=1"
},
function getData(data)
{
var calc = (Number(data[i].getAttribute("RecordToUpdate"))+Number("1"));
alert(calc);
$SP().list("TargetList","http://.../sites/Registry/").update({ID:1, RecordToUpdate: calc});
});
});
所以这很有效,但是有大约10%的可能性记录没有更新我想这是因为有时候更新比calc
变量的计算更快(有时出现alert
使用RecordToUpdate
的默认号码,有时RecordToUpdate+1
)。如果我直接在更新中插入计算,则失败的几率约为40%。那么我怎么能强制它只在计算后才能进行更新呢?
非常感谢你的帮助!
答案 0 :(得分:1)
尝试使用Promise .then
调用来提供同步!
$(function ()
{
$SP().list("TargetList","http://.../sites/Registry/").get(
{
where: "ID=1"
},
function getData(data)
{
var calc = (Number(data[i].getAttribute("RecordToUpdate"))+Number("1"));
$SP().list("TargetList","http://.../sites/Registry/").update({ID:1, RecordToUpdate: calc}).then(function(){
alert(calc);
});
});
});