我一直在尝试按照一些示例为 openwhisk 构建操作。不幸的是,大部分示例都是用 JS 编写的,所以我不得不用 Swift 重写它们。在我想编写异步操作之前,这一直很有效。
我遇到的第一个问题是GCD。 Openwhisks Swift 实现在 Linux 上运行,因此为了使用 GCD,需要导入 libdispatch 库。当然,我无法修改 openwhisk 在其 Swift 运行时加载的模块。最终我偶然发现了 IBM Bluemix Sandbox,在那里我了解到有一个 Dispatch 模块应该提供对类似 GCD 的功能的访问。然而,虽然我可以创建队列、调度时间、闭包等,但我不知道如何实际调度它。 dispatch_async、dispatch_after 等都是未知符号。
虽然我仍然无法解决第一个问题,但我仍在使用 Whisk API。在 JS 中,有一个 whisk.async() 和 whisk.done() 命令。在 Swift 中没有。
问候, 维克多
最佳答案
正如您所指出的,OpenWhisk 在 Linux 容器中运行 Swift 操作。 Linux 对 Foundation
和 libdispatch
的支持仍然是部分的,可能至少再过几个月。 OpenWhisk 定期更新用于运行操作的 Swift 2.2 快照版本,但我们本质上依赖于 Swift 在 Linux 上的总体进展。
我们尚未完成与 JavaScript whisk
API 等效的 Swift 设计。结构不一定会跨语言一对一映射。例如,异步操作可能依赖于 Swift 中的 libdispatch
结构。
关于swift - 在 Swift 中创建异步 Action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35961712/