swift - 沮丧的 Swift 回调

标签 swift asynchronous callback

最近我在做一个项目,需要很多API与服务器异步交互,我尝试过委托(delegate),但是写很多委托(delegate)不是很优雅。我之前一直在关注 SO 上的所有“Swift Callback”线程,但仍然卡住。

//First try

func post(url: String, data: String, callback:(result: String) ->Void){
    callback(result: "Completed")
}

func request(url: String, data: String){
    post(url, data, { (result) in
        println(result)
    })
}

request("Hello", "World")

//prints nothing


//second try following threads

func test(txt: String, resolve: (name: String) -> Void) {
    resolve(name: "Dodo")
}
test("hello", {(name: String) in
    println(name)
})

我错过了什么,任何帮助将不胜感激

最佳答案

你的代码看起来不错。我运行 Xcode 7 并需要进行一些修改,但代码对我有用。如果您在 Playground 中尝试此操作,请确保它确实正在执行。我经常遇到这样的情况:我期望 print 语句显示一些内容,但 Playground 由于错误而卡住并且不输出任何内容。

这是对我有用的代码(针对 Swift 2 进行了修改):

func post(url: String, data: String, callback:(result: String) ->Void){
    callback(result: "Completed")
}

func request(url: String, data: String){
    post(url, data: data, callback: { (result) in
        print(result)
    })
}

request("Hello", data: "World")

func test(txt: String, resolve: (name: String) -> Void) {
    resolve(name: "Dodo")
}
test("hello", resolve: {(name: String) in
    print(name)
})

关于swift - 沮丧的 Swift 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31869296/

相关文章:

ios - 如何搜索非常非常大的 json 文件?

javascript - 尝试从不同的函数中使用 Async 和 Await

javascript - setTimeout 从不执行函数 2

ios - 无法使用 WebRTC 渲染远程视频

ios - 尝试通过 ios 应用程序通过 facebook 登录时出现错误

ios - Miles Away 重新加载时未更新

objective-c - Objective-C快速枚举和异步服务器操作。模型帮助?

c# - Wcf 并行和异步调用?

javascript - jQuery 中 AJAX 回调返回值处理

javascript - 如果我们可以在高阶函数体内调用回调函数,为什么还要将它们作为参数传递呢?