Weex Module Callback 的用法

更新日期: 2017-07-24 阅读次数: 11372 分类: weex

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 聊聊, 查看更多联系方式