gpt4 book ai didi

javascript - Meteor.setTimeout() 保存当前的 'this' 对象而不是 future 的对象

转载 作者:行者123 更新时间:2023-12-03 03:43:02 24 4
gpt4 key购买 nike

当我调用 Meteor.setTimeout() 时,meteor 会保存“this”的当前实例,当时间到了时,我调用的函数将使用 this 的旧实例(当我调用 Meteor.setTimeout() 时保存的实例) )。我怎样才能让 meteor 使用“this”的新实例呢?

// Ending question
const questionEndToLog = () => this.questionEnd(firstQuestion._id);
Meteor.setTimeout(questionEndToLog, firstQuestion.time * 1000);

questionEnd(qId) {
const addToGameLog = () => {
const questionEnd = new QuestionEnd({
questionId: qId
});
this.gameLog = this.gameLog.concat(questionEnd);
this.save();
return true;
};
const isQuestionEndAlready = !!this.gameLog
.filter(e => e.nameType === eventTypes.QuestionEnd)
.find(e => e.questionId === qId);
return isQuestionEndAlready && addToGameLog();
}

export const QuestionEnd = Class.create({
name: eventTypes.QuestionEnd,
fields: {
nameType: {
type: String,
default() {
return eventTypes.QuestionEnd;
},
},
questionId: {
type: String,
},
createdAt: {
type: Date,
default() {
return new Date();
},
},
},
});

this.gameLog 是最旧的日志(调用 Meteor.setTimeout() 时的日志),而不是新的日志。

最佳答案

这不是 meteor 的事。当您使用 () => ... 时,当前 this 上下文将绑定(bind)到此函数。

关于javascript - Meteor.setTimeout() 保存当前的 'this' 对象而不是 future 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45532816/

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