撇号小部件助手不等待 Return
Apostrophe Widget Helper Not Waiting to Return
最近我一直在使用 Apostrophe 中的小部件进行大量工作,并且 运行 遇到了小部件助手的一些问题。我的小部件上有一个助手,它检查不同对象的某些字段以确定它是否应该在页面上显示。但是,我注意到一个奇怪的问题 - 看起来每当我尝试加载一些模块时,助手都没有等待 async toArray 方法在 returning 之前完成。所以,当我有下面的代码时:
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;
})
}
})
实际上 return 模板没有任何内容。但是,当我 return toArray 之外和函数顶层内的任何值时,它会 return 我设置的值。有没有办法解决?我假设该方法没有等待 toArray 方法在 returning 之前完成,但我可能完全错了。
谢谢!
助手是同步执行的,你做异步工作的最后机会是提供一个 pageBeforeSend
函数。
这是使用 super
模式扩展的示例 https://github.com/punkave/apostrophe/blob/1c0b977470a81caec7a98146db4dbd46167f6ee4/lib/modules/apostrophe-pieces-pages/index.js#L387
最近我一直在使用 Apostrophe 中的小部件进行大量工作,并且 运行 遇到了小部件助手的一些问题。我的小部件上有一个助手,它检查不同对象的某些字段以确定它是否应该在页面上显示。但是,我注意到一个奇怪的问题 - 看起来每当我尝试加载一些模块时,助手都没有等待 async toArray 方法在 returning 之前完成。所以,当我有下面的代码时:
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;
})
}
})
实际上 return 模板没有任何内容。但是,当我 return toArray 之外和函数顶层内的任何值时,它会 return 我设置的值。有没有办法解决?我假设该方法没有等待 toArray 方法在 returning 之前完成,但我可能完全错了。
谢谢!
助手是同步执行的,你做异步工作的最后机会是提供一个 pageBeforeSend
函数。
这是使用 super
模式扩展的示例 https://github.com/punkave/apostrophe/blob/1c0b977470a81caec7a98146db4dbd46167f6ee4/lib/modules/apostrophe-pieces-pages/index.js#L387