React Native调用原生模块时Promise不返回结果怎么办?

A. 俊涵 阅读 5

我写了一个iOS原生模块,用Promise方式回调,但在JS里调用后既没进then也没进catch,卡住了。是不是导出方法写错了?

这是我的JS调用代码:

import { NativeModules } from 'react-native';
const { MyNativeModule } = NativeModules;

MyNativeModule.doSomething()
  .then(result => console.log('Success:', result))
  .catch(error => console.log('Error:', error));
我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
一东俊
一东俊 Lv1
iOS原生方法签名不对,Promise需要两个额外的回调参数。改成这样:

// Objective-C
#import

@interface MyNativeModule : NSObject
@end

@implementation MyNativeModule

RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(doSomething:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject)
{
// 成功调用resolve,失败调用reject
resolve(@{@"message": @"OK"});
// 或者 reject(@"ERROR_CODE", @"error message", nil);
}

@end


注意方法声明必须是 (RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject 这两个参数,顺序不能错。JS端方法名会自动对应 doSomething
点赞
2026-03-18 17:03