任务

承诺/期约

promise<T>(
  work: @escaping (@escaping Future<T, Error>.Promise) -> Void
) -> Future<T, Error>

promise<T>(
  work: @escaping (@escaping Future<T?, Error>.Promise) -> Void
) -> Future<T?, Error>

promise(
  work: @escaping (@escaping Future<Void, Error>.Promise) -> Void
) -> Future<Void, Error>

做/执行

do<T>(
  withDelay delay: UInt32 = 0,
  work: @escaping () throws -> T
) -> Future<T, Error>
                               
do<T>(
  withDelay delay: UInt32 = 0,
  work: @escaping () throws -> T?
) -> Future<T?, Error>

do(
  withDelay delay: UInt32 = 0,
  work: @escaping () throws -> Void = {}
) -> Future<Void, Error>

主要/主函数/主要流程

main<T>(
  withDelay delay: UInt32 = 0,
  work: @escaping () throws -> T
) -> Future<T, Error>

main<T>(
  withDelay delay: UInt32 = 0,
  work: @escaping () throws -> T?
) -> Future<T?, Error>

main(
  withDelay delay: UInt32 = 0,
  work: @escaping () throws -> Void = {}
) -> Future<Void, Error>

获取/抓取/拉取 (取决于上下文)

fetch(url: URLRequest) -> Future<(Data?, URLResponse?), Error>

fetch(url: URL) -> Future<(Data?, URLResponse?), Error>

发布/推送/提交 (取决于上下文)

post(request: URLRequest) -> Future<(Data?, URLResponse?), Error>

post(url: URL, withData data: (() -> Data)? = nil) -> Future<(Data?, URLResponse?), Error>

任务示例

.sink(SinkEvent) (可以根据 SinkEvent 的具体含义调整翻译,例如:.sink(接收器事件))

Task
    .do(withDelay: 5)
    .sink(.success { someFunction() })
    .store(in: &bag)

.sink(() -> [SinkEvent]) (可以根据 SinkEvent 的具体含义调整翻译,例如:.sink(() -> [接收器事件]))

Task
    .do(withDelay: 5) {
        "Hello World!"
}
.sink {
    [
        .completion {
            sema.signal()
        },
        .success { value in
            XCTAssertEqual(value, "Hello World!")
        },
        .failure { _ in
            XCTAssert(false)
        }
    ]
}
.store(in: &bag)