为什么fn:last()
函数在产生时不起作用?
这失败了:
xquery version "1.0-ml";
let $items := (1, 2, 3)
return xdmp:spawn-function(function () {
$items[3 to fn:last()]
})
一段时间后,我取消了这份工作,因为它什么也没做。
输出:取消失败,必须手动停止消息指示功能。
这很好用:
xquery version "1.0-ml";
let $items := (1, 2, 3)[3 to fn:last()]
return xdmp:spawn-function(function () {
$items
})
输出:查询已成功完成
答案 0 :(得分:4)
fn:last()
文档的示例显示了此函数的非常相似的用法。在谓词中使用函数的缺点是,它们是针对序列中的每个项目进行评估的。使用fn:subsequence
和可选fn:count
应该更有效率,并绕过您的问题:
let $items := (1, 2, 3)
return xdmp:spawn-function(function () {
xdmp:log(subsequence($items, 3, count($items))) (: you can omit 3rd param with same effect :)
})
HTH!