【问题标题】:Close a function by name outside the function在函数外按名称关闭函数
【发布时间】:2019-09-10 00:33:13
【问题描述】:

我有几个异步函数正在运行,我想知道是否可以关闭在后台运行的函数。以它的名字为例?

async function test(){
 await ...
 await ...
 await ...
}
/* CODE TO CLOSE the test function, something like : aclose("test"); ??? */

【问题讨论】:

标签: javascript asynchronous


【解决方案1】:

我假设“关闭”是指“取消”由函数启动的异步管道。您必须使用 Cancellation Token 模式之类的东西来跟踪异步函数内部的取消。虽然 JavaScript 没有此内置的构造,但您可以使用诸如 cancellationtoken 之类的包。

您可以从任何地方调用令牌的cancel 函数,并定期检查异步函数内部是否已被取消。如果有,您可以简单地返回。如果没有,你继续你的工作。

【讨论】:

    【解决方案2】:

    没有,因为不需要。 JavaScript 中定义的异步函数不会在后台运行;它同时运行,但不是并行运行。每当 JS 代码实际执行时,它就在前台。

    如果您希望其他代码能够阻止函数完成,您需要编写您的异步函数来配合。例如,您可以设置一个外部代码可以设置的共享闭包变量,然后让您的异步函数在每个 await 语句之后检查该变量,看看它是否应该提前返回。

    【讨论】:

      猜你喜欢
      • 2014-07-29
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      相关资源
      最近更新 更多