iOS通过BlockOperation实现线程的队列

210 阅读1分钟

问题:

有表示没有调用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)
}

参考链接:

www.jianshu.com/p/17917dbad…