美文网首页
iOS通过BlockOperation实现线程的队列

iOS通过BlockOperation实现线程的队列

作者: 玉思盈蝶 | 来源:发表于2020-11-13 11:30 被阅读0次

问题:

有表示没有调用makeSureOp这个请求,直接走了printOp就完事了???话说会吗?不应该呀。。。。。。求指教

代码如下:

func sureAndPrint() {
    let languageId = self.printModel != nil ? self.printModel?.id : ""
    let langType = self.printModel != nil ? String.stringValue(self.printModel?.type) : ""
    let barCounterNo = self.tableModel != nil ? (self.tableModel?.tableNo)! : ""
    let bPrint = self.bPrint != nil ? self.bPrint : "Y"
    
    let group = OperationQueue.main
    let printOp = BlockOperation {
        HUDManager.showIndicatorMessage()
        PrintBillService.printBill(withType: PrintType.prePay,langType: langType ,languageId: languageId ?? "", bPrint: bPrint ?? "", barCounterNo:barCounterNo ,  tableBillId:TableManager.shared.currentTableBillID, complete: { (data) in
            HUDManager.hide()
            switch data{
            case.failure(let error):
                HUDManager.showAutoDismissFailedMessage(error.localizedDescription)
            case.success(_):
                print("打印并确认账单成功")
                HUDManager.showAutoDismissSuccessMessage(GLOBAL_LANGUAGE("打印并确认账单成功"))
            }
        })
    }
    let  makeSureOp = BlockOperation {
        HUDManager.showIndicatorMessage()
        PayService.makeSureOrder(languageId: languageId ?? "", langType: langType, bPrint: bPrint ?? "",barCounterNo: barCounterNo ,isCollectTaxationMoney: "") { (data) in
            HUDManager.hide()
            switch data {
            case .success(_):
                print("确认账单成功")
                group.addOperation(printOp)
                HUDManager.showAutoDismissSuccessMessage(GLOBAL_LANGUAGE("确认账单成功"))
            case .failure(let error):
                HUDManager.showAutoDismissFailedMessage(error.localizedDescription)
            }
        }
    }
    group.addOperation(makeSureOp)
}

参考链接:

https://www.jianshu.com/p/17917dbad008

相关文章

  • iOS通过BlockOperation实现线程的队列

    问题: 有表示没有调用makeSureOp这个请求,直接走了printOp就完事了???话说会吗?不应该呀。。。。...

  • 4.2 通过BlockOperation实现线程的队列 [iOS

    1. 本节课将为您演示线程队列的使用,使用线程队列可以依次执行一系列的任务。首先在左侧的项目导航区,打开视图控制器...

  • NSOperation

    iOS多线程--彻底学会多线程之『NSOperation』 一. 基本用法 如果不创建BlockOperation...

  • iOS主线程和主队列的区别

    iOS主线程和主队列的区别 iOS主线程和主队列的区别

  • python多线程的使用

    python多线程的使用 后续还会更新其他方法实现的多线程。 Queue实现多线程 通过队列实现多线程 启动一定数...

  • 关于dispatch_barrier_async和dispatc

    在iOS多线程中,我们可以用GCD的串行队列来实现同步锁的效果。通过在把任务添加到串行队列中来依次执行,达到同步的...

  • 线程池-参数篇:2.队列

    多线程环境中,通过队列可以很容易实现线程间数据共享,比如经典的“生产者”和“消费者”模型中,通过队列可以很便利地实...

  • GCD线程之间的通信

    通过线程的依赖关系实现线程同步: 组队列(dispatch_group_t) 阻塞任务(dispatch_barr...

  • 队列和线程

    [iOS多线程中,队列和执行的排列组合结果分析] 多线程中的队列有:串行队列,并发队列,全局队列,主队列。 执行的...

  • GCD

    GCD 队列与线程的关系 主队列和主线程 『ios』主线程 和 主队列的关系,绝对安全的UI操作,主线程中一定是主...

网友评论

      本文标题:iOS通过BlockOperation实现线程的队列

      本文链接:https://www.haomeiwen.com/subject/otyvbktx.html