DispatchQueue.main.async不调用转义关闭

时间:2017-10-08 13:40:32

标签: ios swift

我正在尝试理解并发性,并且无法弄清楚为什么这不是被调用的转义闭包。

var closure: (() -> ()) = {
    defer { print("inner") }
}

func outer(asyncClosure: @escaping (() -> ())) {
    defer { print("outer") }

    DispatchQueue.main.async { asyncClosure() }
}

outer(asyncClosure: closure)

// output is "outer" only

为什么我的逃避关闭没被调用?它是主队列上的异步函数,不会阻塞任何内容。

1 个答案:

答案 0 :(得分:1)

我猜你在游乐场里跑这个?操场可能已经完成了#34;在outer()的右大括号中运行,之后的异步块没有运行。

尝试:

public User getUser(String url, RequestParams someparams) {
    AsyncHttpClient client = new AsyncHttpClient();
    CommonResponseHandler<User> handler = new CommonResponseHandler<>();
    client.get(url, someparams, handler );
    return handler.getResponse();
}