我在下面有一个函数来从Managed Metadata Service获取术语。当我调用一次函数时,一切正常。但是,如果我把它称之为更多次。它给出了致命错误"该集合尚未初始化......"实际上我使用单页应用程序,它只在我开始时打开网站时运行。这需要我整天的时间,我需要在一个页面中调用该功能5-6次。有人可以帮忙吗?我的代码出了什么问题?
var context = new SP.ClientContext(spContext.hostWeb.appWebUrl);
var taxSession = SP.Taxonomy.TaxonomySession.getTaxonomySession(context);
var termStores = taxSession.get_termStores();
var termStore = termStores.getByName("Yönetilen Meta Veri Hizmeti");
var termSet = termStore.getTermSet(termsetguid);
var terms = termSet.getAllTerms();
context.load(terms);
context.executeQueryAsync(Function.createDelegate(this, onQuerySucceeded), Function.createDelegate(this, onQueryFailed));
function onQuerySucceeded(sender, args) {
try {
var termEnumerator = terms.getEnumerator();
var termList = [];
while (termEnumerator.moveNext()) {
var currentTerm = termEnumerator.get_current();
termList.push(currentTerm.get_name());
}}
catch (e) {
common.logger.logWarning("Warning", "" , true);
}
}
function onQueryFailed(sender, args) {
common.logger.logError("", "Error", true);
}
由于
答案 0 :(得分:1)
在以下情况下通常会发生此错误:
terms
)SP.ClientContext.executeQueryAsync
在循环中调用。自从
指定的函数 async 行为可能无法预测尝试将变量设为本地(例如,使用匿名函数将其括起来)
(function(){
var context = new SP.ClientContext(_spPageContextInfo.webAbsoluteUrl);
var taxSession = SP.Taxonomy.TaxonomySession.getTaxonomySession(context);
var termStores = taxSession.get_termStores();
var termStore = termStores.getByName(termStoreName);
var termSet = termStore.getTermSet(termsetGuid);
var terms = termSet.getAllTerms();
context.load(terms);
context.executeQueryAsync(Function.createDelegate(this, onQuerySucceeded),Function.createDelegate(this, onQueryFailed));
})();