asynchronous - 如何不等待函数结束?

标签 asynchronous haxe

我有两个功能:

function f1(a:String) {
    // long processes with a...
}

function f2() {
    f1("Hey");
    ...
}

我想要的是:

当我从 f2 调用 f1 时,我不想让 f2 被阻止。我也不希望在代码中的某个时刻完成 f1(例如加入线程)

我只是想调用它然后忘记。它会自行运行并自行完成。

我如何在 Haxe 中进行管理?谢谢!

最佳答案

对于 Haxe < 4,这有点麻烦。它的工作方式与 Haxe 4 相同,但没有一种跨平台线程类型,这使得一切变得有点困难(cpp.vm.Thread、neko.vm.Thread 等)。

对于 Haxe 4 - 即使在其当前的候选版本状态下,您也可以使用 sys.thread.Thread 来实现这一点。每次您想要创建一个线程来执行您的函数时,只需调用Thread.create即可。需要注意的一件事是,该函数采用一个不带参数且不返回任何内容的函数。如果您的函数接受一个或多个参数,您可以调用其 bind 方法,如下所述:https://haxe.org/manual/lf-function-bindings.html .

长话短说:

import sys.thread.Thread;

function f2() {
    var f1thread = Thread.create(f1.bind("Hey")); // runs instantly
}

不用说,您应该检查您正在编译的平台是否有线程。

关于asynchronous - 如何不等待函数结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58367176/

相关文章:

javascript - 如何与 ajax 调用并行运行进度条(每 x 秒增加 %)?

angular - 对使用可观察对象和异步管道的 Angular 2 组件进行单元测试

haxe - Haxe 中的动态转换

c# - C# await 关键字是否会导致函数调用阻塞?

node.js - 使用异步代码的AWS Lambda返回NULL

asynchronous - 异步FromBeginEnd接口(interface)

unit-testing - 将可选消息参数添加到assertEquals

Bazel 给出 "open_proc"错误 21 运行嵌入式命令

windows - 使用 Windows 为 Mac 进行 Haxe 交叉编译

haxe - 无法使用 FlxG.overlap 传入 FlxTypedGroup 类参数