沮丧的迅速回调

时间:2015-08-07 03:36:34

标签: swift asynchronous callback

最近,我在一个需要大量API与服务器交互的项目中,我尝试过委托,但写了很多委托人并不是很优雅。我一直在关注所有' Swift Callback' SO之前的线程,仍然坚持。

//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)
})

我错过了什么,任何帮助都会感激不尽

2 个答案:

答案 0 :(得分:0)

您的代码看起来很好。我运行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)
})

答案 1 :(得分:0)

如果您想在游乐场中运行代码,则需要告诉Xcode不要退出(以便它可以在后台发出请求并执行异步回调)。

将它添加到你的游乐场应该可以使它工作:

import XCPlayground

XCPSetExecutionShouldContinueIndefinitely()