on develop help sign in
performRequestsAsync
commit3033f31be92e879fee10f9d2d6b56d6783e8e603 authorAli Abrar <aliabrar@gmail.com> dateSat 7 Mar 2015, 00:52 (12 years ago) parentda555a0
1 file changed+12
src/Reflex/Dom/Xhr.hs+12
src/Reflex/Dom/Xhr.hs+12
@@ -2,6 +2,8 @@
22module Reflex.Dom.Xhr where
33
44#ifdef __GHCJS__
5+import Control.Concurrent
6+import Control.Concurrent.MVar
57import Control.Lens
68import Control.Monad
79import Control.Monad.IO.Class
@@ -77,6 +79,16 @@ performRequestAsync req = performEventAsync $ ffor req $ \r cb -> do
7779 liftIO $ newXMLHttpRequest r cb
7880 return ()
7981
82+performRequestsAsync :: (Traversable f, MonadWidget t m) => Event t (f XhrRequest) -> m (Event t (f XhrResponse))
83+performRequestsAsync req = performEventAsync $ ffor req $ \rs cb -> do
84+ liftIO $ do
85+ resps <- forM rs $ \r -> do
86+ resp <- newEmptyMVar
87+ newXMLHttpRequest r $ putMVar resp
88+ return resp
89+ forkIO $ cb =<< forM resps takeMVar
90+ return ()
91+
8092getAndDecode :: (FromJSON a, MonadWidget t m) => Event t String -> m (Event t (Maybe a))
8193getAndDecode url = do
8294 r <- performRequestAsync $ fmap (\x -> XhrRequest "GET" x def) url