Тип 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
, то есть unit
, поэтому, почему результирующее обещание имеет тип Js.Promise.t(unit)
.
Подробнее о том, как использовать обещания, см. в документации Reason .