Javascript React Native:如何导出具有返回值的方法?

Javascript React Native:如何导出具有返回值的方法?,javascript,objective-c,reactjs,react-native,Javascript,Objective C,Reactjs,React Native,在React Native中导出返回值为的方法的最佳方式是什么 我知道有RCT\u EXPORT\u方法,但这只适用于(void)方法,因此不返回任何内容。最好我不需要导出整个类,只需要导出几个方法 另一个选项是回调,但我希望尽可能避免回调,因为在我的用例中,回调会使代码过于膨胀。还有其他我可能错过的选择吗?似乎还没有办法。这应该是要支持的功能。尝试使用返回值 您现在还可以使用承诺,这在您的JS中看起来会更好一些 目标C: RCT_REMAP_METHOD(getThing, resolver:

在React Native中导出返回值为的方法的最佳方式是什么

我知道有
RCT\u EXPORT\u方法
,但这只适用于
(void)
方法,因此不返回任何内容。最好我不需要导出整个类,只需要导出几个方法


另一个选项是回调,但我希望尽可能避免回调,因为在我的用例中,回调会使代码过于膨胀。还有其他我可能错过的选择吗?

似乎还没有办法。这应该是要支持的功能。

尝试使用返回值


您现在还可以使用承诺,这在您的JS中看起来会更好一些

目标C:

RCT_REMAP_METHOD(getThing, resolver: (RCTPromiseResolveBlock)resolve
     rejecter:(RCTPromiseRejectBlock)reject)
{
  if( condition ) {
    NSString *thingToReturn = @"ALL OK";
    resolve(thingToReturn);
  } else {
    reject([NSError errorWithDomain:@"com.companyname.app" code:0 userInfo:@{ @"text": @"something happend" }]);
  }
}
然后在JS中:

async onPress() {
  try {
    const status = await CustomModule.getThing();
    // do something with status
  } catch(e) {
    console.error(e);
  }
}

我想知道是怎么做到的。通过使用回调,这很好,但除此之外,还有其他选择。我们可以在RCT_EXPORT_方法中使用这些解析和拒绝吗???我如何在//中使用状态当我试图在日志中打印它时,它会显示为[Object Object],您可以解释一下如何打印字符串的值吗?@chrishale您如何调用并向从目标C获取方法提供数据?
async onPress() {
  try {
    const status = await CustomModule.getThing();
    // do something with status
  } catch(e) {
    console.error(e);
  }
}