Weex Module Callback 的用法

发布时间: 2017-07-24 17:40:14 作者: 大象笔记

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
  });
我是一名山东烟台的开发者,联系作者