使用 Future
所建立的 Future 包含 cancel
,若遇到執行時間很長的 Future,可自行使用 setTimeout
取消。
Version
Fluture 14.0.0
Future
import { Future, value } from 'fluture'
import { log } from 'wink-fp'
let data = Future((rej, res) => {
let t = setTimeout(res, 4000, 1)
return () => clearTimeout(t)
})
let cancel = value (log) (data)
setTimeout (cancel, 3000)
第 4 行
let data = Future((rej, res) => {
let t = setTimeout(res, 4000, 1)
return () => clearTimeout(t)
})
使用 Future
建立 4
秒後執行的 Future,,並且回傳 function 提供 cancel
使用。
第 9 行
let cancel = value (log) (data)
使用 value
讀取 Future 內部值,並且回傳 cancel
。
11 行
setTimeout (cancel, 3000)
若 Future 大於 3
秒後才回傳,則會被 setTimeout
執行 cancel
而取消,若小於 3
秒則正常執行 Future。
after
import { after, value } from 'fluture'
import { log } from 'wink-fp'
let data = after (4000) (1)
let cancel = value (log) (data)
setTimeout (cancel, 3000)
第 4 行
let data = after (4000) (1)
也可使用 after
直接建立 4
秒後執行的 Future,已經內建回傳 cancel
。
Conclusion
- 可配合
setTimeout
取消 Future,這是 Promise 做不到的
Reference
Aldwin Vlasbolm, Functional Alternative to Promises
Future, after