Так что в вашем нативном коде вам действительно нужно передать NSArray
обратно callback
. Вроде как.
RCT_EXPORT_METHOD(findEvents:(RCTResponseSenderBlock)callback)
{
NSArray *events = ...
callback(@[[NSNull null], events]);
}
Первый элемент в NSArray
- это ваш шанс передать ошибку. В вашем случае это всегда разрешается, поэтому просто оставьте его [NSNull null]
. Вторым аргументом вместо events
в этом примере будет ваш strName
.
Со стороны JS обратный вызов фактически является традиционным обратным вызовом node
, который принимает ошибку в качестве первого аргумента, а фактический элемент разрешается во втором аргументе. Так что вместо
MyLibManager.findEvents((_, strName) => {
console.log("GET FUN CODE >>>>> "+ strName);
})
Если вам больше нравится шаблон обещания, вы можете использовать следующее:
RCT_REMAP_METHOD(findEvents,
findEventsWithResolver:(RCTPromiseResolveBlock)resolve
_:(RCTPromiseRejectBlock)reject) // I like to leave this as _ if it never fails
{
NSString *strName = @"findEvents";
resolve(strName);
}
А из JS.
const strName = await MyLibManager.findEvents;