![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0zaXR2bk1mYohWblxWMyImeS1mYohmMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmL3gjMzMTO0IjM3IzNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
IO函子简介
1、IO函子中的_value是一个函数,这里是把函数作为值来处理
2、IO函子可以把不纯的操作存储到_value中,延迟执行这个不纯的操作(惰性之行),包装当前的操作
3、把不纯的操作交给调用者来处理
案例演示
const fp = require('lodash/fp');
class IO {
static of(value) {
return new IO(() => {
return value
})
}
constructor(fn) {
this._value = fn
}
map(fn) {
return new IO(fp.flowRight(fn, this._value))
}
}
let result = IO.of(process).map((data) => {
return data.execPath
});
console.log(result); //IO { _value: [Function (anonymous)] }
console.log(result._value()); //C:\Program Files\nodejs\node.exe
谢谢观看!!!