首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在setInterval中读取属性

无法在setInterval中读取属性
EN

Stack Overflow用户
提问于 2015-08-25 15:20:54
回答 1查看 2.4K关注 0票数 0

在node.js上,我得到一个错误:

代码语言:javascript
复制
TypeError: Cannot read property 'talk_duration' of undefined

出发地:setTimeout(this.hangup, this.data.talk_duration * 1000); in the setInterval

但是,在setInterval之外,我有一个工作良好的console.log(this.data.talk_duration);

代码语言:javascript
复制
this.outcomeAnswer = function () {

    console.log(this.data.talk_duration); //this work

    num = 0;

    db.run("INSERT INTO in_queue (action_id, state) VALUES ('" + this.data.action_id + "', 'InQueue')", function (error) {
        queueCheckLoop = setInterval(function () {

            num++;

            if (num == 5) {
                clearInterval(queueCheckLoop);
            }

            db.each("SELECT count(*) as total FROM agent_queue WHERE state = 'Ready'", function (err, row) {
                if (row.total > 0) {
                    clearInterval(queueCheckLoop);
                    setTimeout(this.hangup, this.data.talk_duration * 1000);
                }
            });
        }, 1000);
    });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-25 15:24:19

您需要正确地记住this作为您的oucomeAnswer函数的顶部一行,例如:var that=this;

然后在不同作用域的函数中使用that.data.talk_duration

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32207924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档