Weex Module Callback 的用法

文章目录

    Module 支持返回值给 JavaScript中的回调,回调的类型是WXModuleCallback,回调的参数可以是String或者Map

    @implementation WXEventModule
    @synthesize weexInstance;
       WX_EXPORT_METHOD(@selector(openURL:callback))
    - (void)openURL:(NSString *)url callback:(WXModuleCallback)callback
    {
        NSString *newURL = url;
        if ([url hasPrefix:@"//"]) {
            newURL = [NSString stringWithFormat:@"http:%@", url];
        } else if (![url hasPrefix:@"http"]) {
           newURL = [NSURL URLWithString:url relativeToURL:weexInstance.scriptURL].absoluteString;
        }
    
        UIViewController *controller = [[WXDemoViewController alloc] init];
        ((WXDemoViewController *)controller).url = [NSURL URLWithString:newURL];
    
        [[weexInstance.viewController navigationController] pushViewController:controller animated:YES];
        callback(@{@"result":@"success"});
    }
    
    @end
    

    可见,callback 顾名思义就是传入了一个回调函数。

    如果我想在这个封装的 Module 里其他函数中使用这个 callback,只需要将

    self.callback = callback
    

    self.callback 需要在 header 中定义

    @property(nonatomic,copy)WXModuleCallback callback;
    

    在 Weex 中的使用方法

    module.doSomething(rsp => {
    	this.value = rsp
    })
    

    如果包含其他参数,则为

    module.doSomething('value1',function(rsp) {   
          this.value = rsp
      });
    

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式