React.useEffect(_ => {
ReactNativeAsyncStorage.getItem("jwt")
|> Js.Promise.then_(jwt => {Js.log(jwt)});
None;
});
错误:
This expression has type unit but an expression was expected of type
Js.Promise.t('a) = Js.Promise.t('a)
我将https://github.com/reason-react-native/async-storage与https://github.com/react-native-community/async-storage一起使用
答案 0 :(得分:2)
Js.Promise.then_
的类型是
('a => t('b), t('a)) => t('b)
这意味着传递给它的函数必须返回a,并且then_
本身将返回该承诺。
您在代码中犯了两个错误:
then_
的函数中返回诺言then_
返回的承诺。以下内容可同时修复:
React.useEffect(_ => {
let _: Js.Promise.t(unit) =
Js.Prmoise.(
ReactNativeAsyncStorage.getItem("jwt")
|> then_(jwt => resolve(Js.log(jwt)))
);
None;
});
let _: Js.Promise.t(unit) = ...
使用通配符模式来丢弃以下表达式的结果。结果的类型为Js.Result.t(unit)
,带有注释,以防止意外的部分应用。
resolve(Js.log(jwt))
将返回一个承诺,其结果是调用Js.log
的{{1}},因此为什么得到的承诺类型为unit
。
有关如何使用承诺的信息,请参见Reason documentation。