基本上,我是连接本地android模块与react native,并将信息从native传递到js。
try {
WritableMap params = new WritableNativeMap();
params.putInt("connectionStatus", 2);
sendEvent(mreactContext, "bleConnectionStatus", params);
promise.resolve(params);
} catch (Exception exe) {
Log.d(TAG, "Exception--: " + exe);
promise.reject(exe);
}
字符串
显示异常
Exception--: com.facebook.react.bridge.ObjectAlreadyConsumedException: Map already consumed
型
注意事项:我已经通过这个答案ObjectAlreadyConsumedException: Receiving map already consumed,但它似乎是关于命令行。我已经写了代码,在该顺序只仍然显示异常。
更新
异常在promise.resolve(params);
中,因为当我删除这一行并运行它时,它没有显示任何异常。
2条答案
按热度按时间ewm0tg9j1#
使用
字符串
mec1mxoz2#
好吧,这是一个旧的线程,但由于我刚刚通过Android到React Native桥实现事件时遇到了这个问题,我想我会分享实际的问题和解决方案,以防对任何人都有用。
React Native可扩展Map实际上并没有实现为Map(至少在Android领域),它被实现为一个Map流(或者至少它表现得像一个流)。(通过,引用,阅读等),它不再可用。认为它已经被处理。不幸的是,这在“广泛的”React Native文档中并不明显-感谢Meta/Facebook/无论他们今年如何称呼自己。
解决方案是在最后一次使用之前的任何一次使用中使用可扩展的Map.copy()(在此之后您不应该关心它不再可用)。
所以OP的代码应该是:
字符串