Swift:函数完成的顺序是不可预测的



我得到不可预测的结果,我想知道为什么。我调用了两个函数。第一次,第二个函数先完成,但在那之后,它工作了,它们按顺序完成。我是Swift的新手,所以我迷路了。

下面是两个调用:

 updateValue(value: row, picker: picker.tag)
 updateResult()

updateValue调用一个web服务,该服务使用:

...
     NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue()) {(response, data, error) -> Void in
            if error != nil {
            println("error")
            } else {
            println(response)
            }
...

则updateResult也使用web服务调用读取数据。

...
    var task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: {
            (data, response, error) -> Void in
...

因为updateValue是异步的(我在这里读到它应该是异步的),我不确定我应该怎么做。我也很困惑为什么它只在第一次使用时失效。如果顺序是不可预测的,为什么行为如此可预测?

谢谢

现在我可能是错误的,但在我看来,sendAsynchronousRequest很可能是一个异步调用:-)

换句话说,if将任务分配给另一个正在执行的"线程",并且可能在实际工作完成之前返回给您。

如果您想要同步行为,您可能最好同步调用它,或者至少等到异步操作完成后再执行依赖步骤(例如使用completionHandler)。

最新更新