通过函数外部的名称关闭函数

时间:2019-04-19 19:28:27

标签: javascript asynchronous

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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