gpt4 book ai didi

javascript - 调用具有单个 Promise 参数的 native 模块的 JS 语法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 09:32:35 26 4
gpt4 key购买 nike

Java 签名声明为:

@ReactMethod
public void someMethod(@NonNull String aString, @NonNull final Promise promise);

在这种情况下,Javascript 会这样调用它:

async someMethod() {
try {
var result = await MyModule.someMethod("Hello",)
...
} catch (e) {
console.error(e);
}
}

这有效。

现在我有另一种方法,如下所示:

@ReactMethod
public void someOtherMethod(@NonNull final Promise promise);

而且我无法从 JS 调用它,因为它会提示(对于像我这样没有经验的 JS 开发人员来说,这些错误非常神秘)。我并不期待成为一名熟练的 JS 开发人员,这是一个我需要帮助的小项目,但我不知道如何调用它。

我尝试过以下变体:

var result = await MyModule.someOtherMethod()
var result = await MyModule.someOtherMethod(,)
var result = await MyModule.someOtherMethod({})
...

我看到的大多数示例要么使用Callback(而不是Promise),要么总是方便有多个参数,其中promise(按照设计)是最后一个参数。但我找不到一个仅采用 Promise 的方法的示例。

可能是我不知道如何搜索...(?)

感谢您对我的启发。

最佳答案

我将结束投票,但为了将来引用,以防万一它没有通过,预期语法:

await module.someMethod()

在调用签名如下的@ReactMethod方法时有效

void someMethod(@NonNull Promise p);

我不知道我做了什么黑魔法(*),但现在它起作用了。

(*)在大多数情况下,我注意到使用react-native时,通常情况下,终止“metro”服务器并使用react-native start --reset-cache重新启动它,然后再次运行应用程序很有用。这使得我原本无法编译/运行的项目在其他解决方案不起作用时最终多次编译/运行正常。

我在使用react-native期间也执行了几次这个命令,因为它确实修复了当我做某些事情(不确定是哪一个)时出现的许多编译错误。

mkdir -p android/app/src/main/assets && rm -rf android/app/build && react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

之后,正常的 react-native run-android 通常可以工作(或从 Android Studio 运行)。

从那里(在使用带有 Vysor 的真实设备时),我通过在命令行中发出命令来获得“重新加载”菜单和其他内容:

adb shell input keyevent 82

感谢您的帮助,并希望这能为其他人指明正确的方向。

关于javascript - 调用具有单个 Promise 参数的 native 模块的 JS 语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56903150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com