作者t19960804 (泥好吗)
看板MacDev
标题[问题] 非同步观念厘清
时间Thu Jan 31 10:12:51 2019
当我使用非同步的方法去取得资料时
为什麽需要用completion去做处理?
有去查了一下
但只说因为是非同步所以要用completion
我还是不太清楚这两者之间的关系
求大大开释
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 110.28.202.94
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1548900773.A.443.html
1F:推 ch30529: 不知道什麽时候得到回应,又要在回应之後做 01/31 11:17
2F:推 darktt: 正常code的顺序是同步的时候,而非同步的时候是不会等待 01/31 11:20
3F:→ darktt: 结果到了才接着下一行,而是先往下一行跑,等结果回来後再 01/31 11:20
4F:→ darktt: 处理 01/31 11:20
5F:→ darktt: 这要从Swift来看会比较快理解,Swift的闭包等同於method, 01/31 11:24
6F:→ darktt: 所以你可以当completion是一个特殊的method,是用来处理非 01/31 11:24
7F:→ darktt: 同步呼叫用的 01/31 11:24
8F:→ t19960804: 我把completion放进非同步方法的scope中处理回传的资 01/31 11:38
9F:→ t19960804: 料,执行的顺序变成上到下,所以资料才能传入completio 01/31 11:38
10F:→ t19960804: n中,这样的观念是对的吗? 01/31 11:38
11F:→ atst2: 想像一下你想要泡茶, 泡茶前要先烧开水; 但如果你一直等着 01/31 23:08
12F:→ atst2: 水烧开,其他事就不用做了; 所以你去买一个气笛水壶, 水烧 01/31 23:10
13F:→ atst2: 开就自动通知你回来泡茶. 在这段时间你就可以做别的事. 01/31 23:10
14F:→ atst2: completion,或者是callback, 就像是气笛的角色. 01/31 23:11
15F:推 gundam00: 把completion内跟其他部分都print出来 就知道了 02/01 14:24
16F:推 bbonline229: 推楼上 02/01 14:25
17F:推 ou9810: 建议你尝试用gcd写一个非同步的程式 175.98.152.120 03/22 17:08