gpt4 book ai didi

javascript - Meteor - 使用 Meteor.call 的返回值时出现问题

转载 作者:行者123 更新时间:2023-11-29 18:26:18 25 4
gpt4 key购买 nike

我可能在这里展示了我对 javascript 的无知,但为什么这不起作用?我该如何重写这段代码才能使其正常工作?

// On the client
Template.tabs.title = function () {
var msg;
Meteor.call('getMessage', this.msg_id, function (error, result) {
console.log(result); // Prints out a perfectly fine message object
msg = result;
});
if (msg)
return msg.title;
else
return "(empty)"; // This is always the value that's shown on the page
};

我对这个问题的理解是,“if”语句在回调可以设置 msg 变量之前执行。是对的吗?还是范围界定问题?我什至可以这样做,从模板中调用“call”吗?

我在这里使用方法的原因是 Messages 集合可能很大,我无法在客户端上将其作为一个整体订阅。我订阅了它的一部分,但我还需要查找任意消息,无论我的订阅有什么可用。

最佳答案

当您检查 msg 时,关于回调尚未设置的说法是正确的。我想最好的办法就是在回调返回时设置一个 Session 变量,并在发生这种情况时依靠 Meteor 的 react 性来重绘您的消息。像这样的东西:

Template.tabs.title = function () {
var title = Session.get('currentTitle');

if (title) {
return 'title';
else {
Meteor.call('getMessage', this.msg_id, function (error, msg) {
Session.set('currentTitle', msg ? msg.title : "(empty)");
});
}
};

另一方面,我可能会说使用单消息订阅来获取“当前消息”会更有意义并且更符合习惯。

关于javascript - Meteor - 使用 Meteor.call 的返回值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12764307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com