點燈坊

失くすものさえない今が強くなるチャンスよ

使用 Future 建立 Cancellable Future

Sam Xiao's Avatar 2021-06-29

若要建立完整 Cancellable Future,可使用 Future 建立。

Version

Fluture 14.0.0

Future

import { Future, fork } from 'fluture'
import { error, log } from 'wink-fp'

let data = Future ((rej, res) => {
  let t = setTimeout (res, 1000, 1)
  return () => clearTimeout (t)
})

let f = fork (error) (log)

f (data)

Fluture 提供了 Future 建立 Future,它提供了 rejres 兩 function,rej 可建立 Rejected Future,而 res 可建立 Resolved Future。

較特別的是 Future 必須回傳 function 提供 cancel Future 功能。

Future
((a -> Undefined, b -> Undefined) -> Cancel) -> Future a b
建立 Cancellable Future

a -> Undefined:提供 rej 建立 Rejected Future

b -> Undefined:提供 res 建立 Resolved Future

Cancel:回傳 cancel

Future a b:回傳 Cancellable Future

future000

Conclusion

  • Future 用法很類似 Promise Constructor,都提供了 rejres,唯 Future 只是 free function,並不需要 new,但必須回傳 cancel

Reference

Aldwin Vlasbolm, Functional Alternative to Promises
Fluture, Future