如何在具有委托的 iOS 本机模块中管理 React Native 的承诺?

问题描述

我需要找到连接到我手机相同 WiFi 的可用打印机。为此,我使用了 brother SDK。

我正在使用 React Native 开发一个 Native 模块。在这个 SDK 中,我们有方法 startSearchWifi 开始搜索,当它完成操作时,方法 didFinishSearch调用

这是 SWIFT 中的代码

@objc(brotherPrinterTm)
class brotherPrinterTm: NSObject,BRPtouchNetworkDelegate {

    @objc private var networkManager: BRPtouchNetworkManager?

    
    func startSearchWiFiPrinter() {
        let manager = BRPtouchNetworkManager()
        manager.delegate = self
        manager.startSearch(5)
        self.networkManager = manager
    }

    // BRPtouchNetworkDelegate
    func didFinishSearch(_ sender: Any!) {
        guard let manager = sender as? BRPtouchNetworkManager else {
            return
        }
        guard let devices = manager.getPrinterNetInfo() else {
            return
        }
        for deviceInfo in devices {
            if let deviceInfo = deviceInfo as? BRPtouchDeviceInfo {
                print("Model: \(deviceInfo.strModelName),IP Address: \(deviceInfo.strIPAddress)")
            }
        }
        
    }
    
    @objc static func requiresMainQueueSetup() -> Bool {
        return true
    }
    
}

我想向我的 Javascript 应用公开一个名为 discoverWiFi方法,该方法管理所有进程并返回一个承诺。

像这样:

@objc(discoverWiFi:withResolver:withRejecter:)
func discoverWiFi(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
    startSearchWiFiPrinter();
    ...

}

问题是我不知道如何使用在调用 didFinishSearch 时在 findWiFi 中传递的 resolvereject 函数

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)