Go to file
Zach Eriksen cfe31fd675
Update README.md
2021-05-19 21:14:23 -05:00
.swiftpm/xcode/package.xcworkspace/xcshareddata Initial Commit 2021-05-18 10:50:47 -05:00
Sources/Task Finalize changes for initial release 2021-05-19 21:12:03 -05:00
Tests/TaskTests Update tests from 5 seconds to 3 2021-05-18 19:46:57 -05:00
.gitignore Initial Commit 2021-05-18 10:50:47 -05:00
Package.swift Task.init() 2021-05-18 10:57:24 -05:00
README.md Update README.md 2021-05-19 21:14:23 -05:00

README.md

Task

promise

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

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

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

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

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

post

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

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

Task Examples

.sink(SinkEvent)

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

.sink(() -> [SinkEvent])

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