我正在尝试理解并发性,并且无法弄清楚为什么这不是被调用的转义闭包。
var closure: (() -> ()) = {
defer { print("inner") }
}
func outer(asyncClosure: @escaping (() -> ())) {
defer { print("outer") }
DispatchQueue.main.async { asyncClosure() }
}
outer(asyncClosure: closure)
// output is "outer" only
为什么我的逃避关闭没被调用?它是主队列上的异步函数,不会阻塞任何内容。
答案 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();
}