我最近在Apostrophe中经常使用小部件,并且在小部件的助手方面遇到了一些问题。我的小部件上有一个帮助程序,它检查不同对象的某些字段,以确定它是否应该在页面上显示。但是,我注意到了一个奇怪的问题 - 看起来每当我尝试加载某些模块时,帮助程序都不会在返回之前等待async toArray方法完成。所以,当我有下面的代码时:
self.addHelpers({
familyMembers: function() {
var userId = "set from context";
var userModule = self.apos.modules['apostrophe-users'].find(req, {_id: userId}).permission(false);
userModule.toArray(function (err, arr) {
var showMe = false;
if (some_condition) {
showMe = true;
}
return showMe;
})
}
})
它实际上并没有向模板返回任何内容。但是,当我返回toArray之外的任何值并且在函数的顶层内部时,它确实返回我设置的值。有没有办法解决?我假设该方法在返回之前没有等待toArray方法完成,但我可能完全错了。
谢谢!
答案 0 :(得分:2)
帮助程序是同步执行的,您最后一次执行异步工作的机会是提供pageBeforeSend
函数。