若在 map
使用回傳 Future 的 Function,必須要搭配 parallel
才能取出 Array 內的 Future。
Version
Sanctuary 3.1.0
Fluture 14.0.0
Asynchronous map
import { encase, parallel, fork } from 'fluture'
import { inc } from 'ramda'
import { env as flutureEnv } from 'fluture-sanctuary-types'
import { create, env } from 'sanctuary'
import { error, log } from 'wink-fp'
let { pipe, map } = create ({ checkTypes: true, env: env.concat (flutureEnv) })
let data = [1, 2, 3]
let inc_ = encase (inc)
pipe ([
map (inc_),
parallel (Infinity),
fork (error) (log),
]) (data)
11 行
let inc_ = encase (inc)
使用 encase
直接將一般 function 轉成回傳 Future 的 function。
13 行
pipe ([
map (inc_),
parallel (Infinity),
fork (error) (log),
]) (data)
使用 pipe
組合 IIFE:
map (inc_)
:將 Array 與回傳 Future 的 function 綁定,回傳 Array Futureparallel (Infinity)
:所有 Future 同時執行,也可明確指定 Integerfork (error) (log)
:解開 Future
Conclusion
- Quokka 可在 Array Promise 內顯示 Pending Promise,但無法在 Array Future 內顯示 Pending Future,只能自行使用
parallel
才能正確解開 Array Future