在下面的示例中,将打印第一个警报,而第二个警报不会打印。我需要使用ctx.executeQueryAsync
来执行许多操作,但是在运行之后我需要使用更新的“titles”值。如果我之后尝试,控制台会说“标题”未定义或空白。我已经能够在代码的其余部分更新for循环中的变量,这是剩下的部分。
顺便提一下,这在SharePoint列表中使用。
function doStuff() {
var titles = [];
for(var i = 0; i < selectedItems.length; i++) {
var id = selectedItems[i].id;
var item = list.getItemById(id);
items.push(item);
ctx.load(item, "Title");
}
if (items) {
ctx.executeQueryAsync(function() {
for(var j = 0; j < items.length; j++) {
titles.push(items[j].get_item("Title"));
}
alert(titles.toString());
}, function(sender, args){
alert('Request failed. '
+ args.get_message() + '\n'
+ args.get_stackTrace());
});
}
alert('titles '+titles.toString());
}
答案 0 :(得分:0)
function doStuff() {
var titles = [];
for(var i = 0; i < selectedItems.length; i++) {
var id = selectedItems[i].id;
var item = list.getItemById(id);
items.push(item);
ctx.load(item, "Title");
}
if (items) {
ctx.executeQueryAsync(function(titles) {
return function() {
for(var j = 0; j < items.length; j++) {
titles.push(items[j].get_item("Title"));
}
alert(titles.toString());
}, function(sender, args){
alert('Request failed. '
+ args.get_message() + '\n'
+ args.get_stackTrace());
}
}(titles));
}
alert('titles '+titles.toString());
}