【问题标题】:Apostrophe Widget Helper Not Waiting to Return撇号小部件助手不等待返回
【发布时间】:2017-10-17 08:07:56
【问题描述】:

我最近在 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 方法完成,但我可能完全错了。

谢谢!

【问题讨论】:

    标签: apostrophe-cms


    【解决方案1】:

    【讨论】:

    • 正确答案,但也许不是最好的例子,因为在那个例子中,pageBeforeSend 提供的方法不接受回调。需要明确的是,它可以接受(req, callback) 而不仅仅是(req),在这种情况下,您的异步代码应该以调用callback(null) 结束。 (通常,如果您没有将回调视为函数的参数,则没有理由期望它会等待异步代码运行。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多