BrightFutures异步请求的回调是否始终运行在主线程?
BrightFutures回调线程说明
你的结论不正确,onSuccess和onFailure的回调并非始终运行在主线程,具体执行线程遵循以下规则:
- 默认情况下,回调会运行在发起请求时当前所处的线程上下文。如果调用
makeSomeRequest的代码在主线程,回调才会落在主线程;如果请求是在后台线程发起的,回调默认也会在该后台线程执行。 - 你可以主动指定回调的执行线程,通过
on:参数传入目标ExecutionContext,比如强制让回调跑在主线程:
service.makeSomeRequest( param1: value1, param2: value2 ) .onSuccess(on: Queue.main) { [weak self] result in ... } .onFailure(on: Queue.main) { [weak self] error in ... }
- 若
makeSomeRequest内部已经通过BrightFutures的API指定了回调的执行上下文,那么最终的回调线程会以内部设置为准,这取决于该请求方法的具体实现。
内容的提问来源于stack exchange,提问作者AlanSTACK
相关产品推荐
相关产品推荐

