我在做一個搜索,然後循環遍歷結果。這會導致我的代碼被鎖定,甚至更糟糕,它會鎖定該數據庫以免被其他用戶使用。即使在瀏覽器關閉之後。看起來這個「鎖定」在一段時間後被清除,直到我再次嘗試我的代碼。我將改變我做這個特定任務的方式,但我很好奇究竟是什麼導致了這種鎖定。通過收集循環導致鎖定
var collection = database.search("Form = 'Request01' & Status='Approved'");
if (collection.getCount() == 0)
{
getComponent("panel1").setRendered(false);
getComponent("panel2").setRendered(true);
getComponent("panel4").setRendered(true);
return;
}
dBar.info("Approved Requests Found= " + collection.getCount());
var item:NotesItem = document1.replaceItemValue("DocIds","AAAA");
var doc:NotesDocument = collection.getFirstDocument();
while (doc != null)
{
try
{
var tmpDoc = collection.getNextDocument(doc);
item.appendToTextList(doc.getNoteID());
dBar.info("Processing document: " + doc.getNoteID())
doc.recycle();
doc = tmpDoc;
}
catch(e)
{
dBar.error(e.message);
}
}
document1.save();
replaceItemValue應該返回一個項目,所以我不確定這是無限循環的原因,但Sven是正確的:該嘗試應該是在循環周圍,而不是在它內部。 –
@Tim:否,* NotesXspDocument *的* replaceItemValue *方法返回* void *。對於Java和LS,它將返回NotesItem。 –
那麼如何獲得NotesItem的句柄?他們會這樣做嗎? –