闭包导致的时间问题怎么解决?

例如

func hello() -> Bool {
    var result = false
    httpRequestWithCompletionHandler({ is404 in
        result = is404
    })
    return result
}

这个函数的返回值永远是 false,因为 closure 是异步执行的
怎么在调用这个函数的时候,得到真正的返回值呢?
注: result 必须定义在函数体内,不能定义在函数体外

阅读 3.5k
2 个回答
新手上路,请多包涵
var result_cb = function (result) { alert(result) };

function hello(cb) {
    httpRequestWithCompletionHandler(is404) {
        cb(is404);
    }
}

hello(result_cb);

这样?

GO lang ? 异步执行的函数只能通过回调来获得值,因此不能直接通过hello返回bool的方式来获得结果。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进