我有一个函数使用WCF服务(在SharePoint中)使用数据。该服务不会返回项目所需的特定字段,因此我使用SharePoint Client Object Model通过使用WCF服务返回结果中的ID来查询该字段。JavaScript循环中的回调导致问题
function LoadAllNews() {
var listUrl = "/_vti_bin/ListData.svc/Pages";
$.getJSON(listUrl,
function (data) {
$.each(data.d,
function (i, result) {
GetImageUrl(result.Id, function (image) {
$(ConstructHtml(image, result.Title, result.Path, result.Name)).appendTo("#News");
});
});
});
}
当调试result
在这里,我总是得到项目以相同的顺序返回,但由于GetImageUrl异步执行的项目的查询并不以相同的顺序追加。大多数他们必须似乎有些时候是随机的时代,因为时间来获得图像变化:
function GetImageUrl(id, callback) {
var context = new SP.ClientContext();
var items = context.get_web().get_lists().getByTitle('Pages').getItemById(id);
context.load(items);
context.executeQueryAsync(function() {
callback(items.get_item('PublishingRollupImage'));
});
}
function ConstructHtml(imageUrl, title, path, name) {
var html = "" // a long html string..
return html;
}
我可以在sharepoint.stackexchange张贴此,但观众更广泛的在这里和这更是一个问题如何用JavaScript处理这个比用SharePoint本身。
任何想法,我应该如何处理这个?我在想,像在LoadAllNews()中跳过图像,然后当附加所有项目时,使用JavaScript/jQuery为每个新闻项加载图像。
在此先感谢。