Sharepoint JSOM:set_item()不带更新()

Sharepoint JSOM:set_item()不带更新(),sharepoint,sharepoint-2010,Sharepoint,Sharepoint 2010,我正在使用SharePoint Javascript对象模型(JSOM)。有人能给我解释一下set\u item()在未调用update()时做什么吗 下面是一些代码来说明 获取列表项的样板代码: 第一组命令 对SharePoint的实际网络请求包含两个带有“foo”和“bar”的“SetFieldValue”方法,第二个请求只包含一个“Update”方法。SharePoint仅将第二个值更新为“bar” 第二组命令 第二个请求只包含一个更新方法。SharePoint未使用“foo”更新第一个值

我正在使用SharePoint Javascript对象模型(JSOM)。有人能给我解释一下
set\u item()
在未调用
update()
时做什么吗

下面是一些代码来说明

获取列表项的样板代码: 第一组命令 对SharePoint的实际网络请求包含两个带有“foo”和“bar”的“SetFieldValue”方法,第二个请求只包含一个“Update”方法。SharePoint仅将第二个值更新为“bar”

第二组命令 第二个请求只包含一个更新方法。SharePoint未使用“foo”更新第一个值

问题: 为什么即使未调用update,也会发送第一个项目

显然,当调用
first.update()
时,新值不会再次传递-但我至少会假设它将在SharePoint中暂存,等待
更新()
-但这不会发生


谢谢

执行
update()
提示后端主动替换/向存储对象添加值
set_item()
将要更新的值和字段传递给服务器。两者都按预期工作,但在明确使用
update()
之前,存储的信息不会发生实际更改。这可能是为了更好地利用批处理。

没错,但是如果没有办法(我可以看到)利用它,那么为什么来自
set\u item
的更改日志会通过网络进行呢?我想这可能纯粹是准备工作。在异步开发方面,它也可能有用(请注意,我在这里假设)。从编程角度讲,设置
更新
执行
是一种非常清晰的语法。这提供了一个方便的控制流;此外,您可以设置多个项目以排队等待
update()
方法。我尝试了后者-它不起作用。这就是它让我困惑的原因。不过,我明白你对不必要的网络流量所说的。但是,该程序的异步性质可能要求您将这些项设置到后端队列中,然后稍后通过异步链执行更新方法。是的,我尝试过,稍后调用
update
,但没有效果。
var ctx = SP.ClientContext.get_current();

var list = ctx.get_web().get_lists().getByTitle('Employees');
var listItems = list.getItems("");

ctx.load(listItems, "Include(Name, Role)");
ctx.executeQueryAsync(onSuccess, onFailure);
var first = listItems.getItemAtIndex(0);
var second = listItems.getItemAtIndex(1);

first.set_item("Role", "foo");
second.set_item("Role", "bar");

second.update(); // only call update on the second item
ctx.executeQueryAsync(onSuccess, onFailure);
first.update();
ctx.executeQueryAsync(onSuccess, onFailure);