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
Js.Promise.then_
的类型为
('a => t('b), t('a)) => t('b)
这意味着传递给它的函数必须返回a,并且then_
本身将返回该promise。
你在代码中犯了两个错误:
- 您没有从传递给
then_
的函数返回promise - 您没有处理
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))
将返回一个promise,其中包含调用Js.log
的结果,即unit
,因此生成的promise的类型为Js.Promise.t(unit)
。
有关如何使用promise的更多信息,请参阅Reason文档。