swift - 在 Swift 中创建异步 Action

标签 swift asynchronous grand-central-dispatch openwhisk

我一直在尝试按照一些示例为 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 对 Foundationlibdispatch 的支持仍然是部分的,可能至少再过几个月。 OpenWhisk 定期更新用于运行操作的 Swift 2.2 快照版本,但我们本质上依赖于 Swift 在 Linux 上的总体进展。

我们尚未完成与 JavaScript whisk API 等效的 Swift 设计。结构不一定会跨语言一对一映射。例如,异步操作可能依赖于 Swift 中的 libdispatch 结构。

关于swift - 在 Swift 中创建异步 Action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35961712/

相关文章:

objective-c - 对每个对象而不对每个类使用dispatch_once_t

ios - 我可以在 semaphore.wait() 主线程上调用吗?

ios - 将 iAd 横幅叠加到屏幕上而不是调整屏幕大小

javascript - Google 跟踪代码管理器 - 页脚中的脚本怎么样?

objective-c - 如何在没有死锁的情况下同步调度主队列?

.net - 新的异步方法和性能

c# - 实现 HttpWebRequest 异步调用

swift - 将字符串转换为字符强制我映射{$0},这是什么意思?

ios - 为什么使用 SwiftUI 不显示导航标题?

ios - Swift - 循环中的完成处理程序