在Marklogic 9中是函数sem.sparql异步或同步。看起来当在相同的javascript批处理中使用不同的查询执行2个sem.sparql时,执行第二个查询时,第一个查询的结果尚未准备好。例如:
var sem = require("/MarkLogic/semantics.xqy");
var roles=[];
roles=sem.sparql('query1');
var users=[];
users=sem.sparql('query2 checkroles bind or filter',{
checkroles:function(user){
// check roles array.
}
});
当执行第二个查询时,roles数组未准备好。这里有一种使用诺言的方法。