Heim  >  Fragen und Antworten  >  Hauptteil

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

例如

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

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

伊谢尔伦伊谢尔伦2759 Tage vor701

Antworte allen(2)Ich werde antworten

  • 大家讲道理

    大家讲道理2017-04-24 09:12:38

    var result_cb = function (result) { alert(result) };
    
    function hello(cb) {
        httpRequestWithCompletionHandler(is404) {
            cb(is404);
        }
    }
    
    hello(result_cb);
    

    这样?

    Antwort
    0
  • 迷茫

    迷茫2017-04-24 09:12:38

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

    Antwort
    0
  • StornierenAntwort