0
我正在函數(函數1)的成功處理程序中運行的循環中調用函數(函數2)。在循環的第一次迭代中,當我調用函數(函數2)時,函數被調用,並且在調用函數(函數2)的成功處理程序中指定執行操作。但在此之後,控制不會轉移到第一個函數(Function1)的成功處理程序中的循環,並且循環不再執行。下面的代碼說明了情況:調用函數(帶成功處理程序)後執行循環停止
function Function1()
{
clientContext = SP.ClientContext.get_current();
website = clientContext.get_web();
var oList = web.get_lists().getByTitle('Test');
var camlQuery = new SP.CamlQuery();
this.collListItem = oList.getItems(camlQuery);
clientContext.load(this.collListItem, 'Include(ID, LinkFilename, Sender, Created, DocIcon)');
clientContext.executeQueryAsync(
Function.createDelegate(this, successHandler),
Function.createDelegate(this, errorHandler)
);
function successHandler() {
var itemsCount = this.collListItem.get_count();
for (i = 0; i < itemsCount; i++) {
var item = this.collListItem.itemAt(i);
alert(item.get_fieldValues()["Created"]);
Function2();
}
alert('Loop ends');
}
function errorHandler() {
}
}
現在功能2如下:
function Function2(){
var context = SP.ClientContext.get_current();
var web = context.get_web();
var oList = web.get_lists().getByTitle('Test2');
var camlQuery = new SP.CamlQuery();
this.collListItem = oList.getItems(camlQuery);
context.load(this.collListItem, 'Include(ID, BaseName, Created, ServerUrl)');
context.executeQueryAsync(
Function.createDelegate(this, success),
Function.createDelegate(this, error)
);
function success() {
var itemsCount = this.collListItem.get_count();
for (i = 0; i < itemsCount; i++) {
var item = this.collListItem.itemAt(i);
alert(item.get_fieldValues()["ServerUrl"]);
}
}
function error(){
}
}
現在我面臨的問題是,代碼只是循環的第一個第一次迭代運行函數,即使itemsCount
大於1(在此之後,寫入循環下面的代碼(顯示「循環結束」的警報)甚至不會執行)。 我無法發現錯誤,您的建議非常受歡迎。請通過這個指導我。