Я пытаюсь просмотреть список элементов, кэшировать URL-адрес, а затем обновить URL-адрес в списке перед его рисованием.
Однако, похоже, я не могу этого сделать.
Любая идея?
external cache: option(string) => Js.Promise.t({. "uri": string, "filePath": string }) = "get";
let items = result##data##data->Option.getWithDefault([||]);
let cachedUri = items
->Belt.Array.map(
item =>
cache(item##hosted_video_url)
->FutureJs.fromPromise(Js.String.make)
->Future.flatMapOk(cachedObj => (
{. "hosted_video_url": cachedObj##uri }
)
))
->Belt.Array.toList
->Future.all;
Future
иFutureJs
? Они не поставляются с BuckleScript прямо из коробки. В любом случае суть фьючерсов и обещаний в том, что они представляют будущие ценности. Вы не можете просто вынуть его, так как его еще нет. Вы должны дождаться этого, что означает продолжение вычислений в контексте будущего. Там может быть функцияFuture.all
, которая позволяет вам удобно ждать всех фьючерсов в списке, иначе работать со списком фьючерсов будет непросто. - person glennsl   schedule 30.09.2019all
функция, так что вы можете просто использовать это тогда. - person glennsl   schedule 30.09.2019