首页 > 解决方案 > 如何从 node.js 中的该函数调用结构内的函数?

问题描述

好的,这是我的代码的基本大纲

exports.entity = {
    name:"Foo",
    //Etc...
    start:function() {
        this.attack();
    },
    attack:function() {
        setTimeout(attack, 1000); //Doesn't work
        setTimeout(this.attack, 1000); //Doesn't work
        setTimeout(this, 1000); //Doesn't work
    }
}

正如您可能看到的,我想attack()使用setTimeout. 不幸的是,我尝试过的一切都不起作用,而且我的想法已经枯竭。我在互联网上找不到任何东西。有谁知道我怎么能做到这一点?

注意:当我说 时doesn't work,我的意思是它给了我一个错误,比如(insert what I tried here, e.g. 'this.attack') is not a function

标签: javascriptnode.js

解决方案


为了避免范围问题,我通常会做的是拆分功能。然后导出对象。

const attack = () => {
  console.log('attacking');
  setTimeout(() => {
    stop();
  }, 1000)
};

const stop = () => {
  console.log('stopping');
}

const start = () => {
  attack();
}

module.exports = { start, stop, attack }

否则,您可以按照评论中的建议绑定(this)。


推荐阅读