Ios Swift:功能完成的顺序是不可预测的
我得到了不可预测的结果,我想知道为什么。我调用两个函数。第一次,第二个函数首先完成,但在那之后,它开始工作,它们按顺序完成。我是斯威夫特的新手,所以我迷路了 以下是两个电话:Ios Swift:功能完成的顺序是不可预测的,ios,iphone,swift,ipad,Ios,Iphone,Swift,Ipad,我得到了不可预测的结果,我想知道为什么。我调用两个函数。第一次,第二个函数首先完成,但在那之后,它开始工作,它们按顺序完成。我是斯威夫特的新手,所以我迷路了 以下是两个电话: updateValue(value: row, picker: picker.tag) updateResult() updateValue调用一个web服务,该服务使用以下命令写入数据: ... NSURLConnection.sendAsynchronousRequest(request, queue:
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
很可能是一个异步调用:-)
换句话说,如果将任务转移到另一个执行的“线程”,并且可能在实际工作完成之前返回给您
如果您想要同步行为,您最好同步调用它,或者至少在执行依赖步骤之前等待异步操作完成(例如使用completionHandler
).现在我可能错了,但在我看来,sendAsynchronousRequest
很可能是一个异步调用:-)
换句话说,如果将任务转移到另一个执行的“线程”,并且可能在实际工作完成之前返回给您
如果您想要同步行为,您最好同步调用它,或者至少等到异步操作完成后再执行相关步骤(例如使用
completionHandler
。我会将您从取笑我开始的操作放在一边。:)因为完成处理器听起来是个好主意。我试试看,道歉,@user3026206只是温和地嘲笑了这个问题,而不是你个人。这正是澳大利亚的古怪才智。我不认为你是从取笑我开始的。:)因为完成处理器听起来是个好主意。我试试看,道歉,@user3026206只是温和地嘲笑了这个问题,而不是你个人。这就是澳大利亚人奇怪的智慧,就像现在这样。