SharePont javascript客户端:如何确保流程的正确顺序?

时间:2017-10-10 12:06:50

标签: javascript sharepoint synchronization

我有一个代码,我从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%。那么我怎么能强制它只在计算后才能进行更新呢? 非常感谢你的帮助!

1 个答案:

答案 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);
    });
  });
});