【问题标题】:How to delete an Object of a function in javascript?如何在javascript中删除函数的对象?
【发布时间】:2019-04-18 12:39:17
【问题描述】:

例如,变量 x 是函数 my 的对象。我只希望函数 my 运行一段时间,但我不知道如何停止它。

function my (num){
  while (1) // means this process is an infinite loop
  {
    console.log(1);
  }
}

var x = new my();

在不修改函数my的前提下(因为origin函数很复杂),如何停止函数,或者如何删除对象?

【问题讨论】:

  • 你总是需要一个条件来描述什么时候应该停止。你知道函数应该运行多少秒吗?它应该运行的次数是有限的吗?对象是否应该达到某种状态然后停止?如果没有更多细节,我们不能真正说出在这种情况下适用的情况,而不知道实际发生了什么以及它应该如何/为什么/何时停止。所以这听起来有点像结构或架构问题。如果有人在没有退出的情况下为您提供了带有 while(1) 的代码,那么您可能无法在不更改该 while 循环的情况下执行任何操作。
  • 我的意思是这个函数只要启动就会一直运行。 oringin 函数没有这样的 while(1) 循环,它会影响其他函数的工作,我只想知道有没有办法在不改变函数的情况下停止函数。

标签: javascript


【解决方案1】:

你不能。 JS 中没有并发,因此你不能同时停止另一个动作。您必须修改阻塞代码以支持协作并发取消。

 const tick = () => new Promise(res => setTimeout(res, 0));

 let kill;

 function my (num){
  (async function() {
    while (!kill) {
      console.log(1);
      await tick();
     }
  })();
}

var x = new my();

setTimeout(() => kill = true, 10000);

【讨论】:

    猜你喜欢
    • 2016-08-12
    • 2021-08-11
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    相关资源
    最近更新 更多