We examine the data structure Task, see some constructors, familiar methods, and finally how it captures side effects through laziness.

We using a 'data.task' library. It is a bit similar to $q library in Angular. Accepts one function, function takes two params, 'reject function' & 'resolve function'.

import Task from 'data.task';

const launchMissiles = () =>
new Task((rej, res) => {
console.log('launch missiles!')
res('missile')
})

Because this is laziness, therefore, we can compose logic based on that:

const app = launchMissiles().map(x => x + '!')
app
.map(x => x + '!')
.fork(e => console.error('err', e),
x => console.log('success', x))

If inside 'lauchMissiles' call 'reject' function, all the map function chaining on app won't be called anymore.

'fork' is the actually function which trigger it works.

-----

import Task from 'data.task';

const launchMissiles = () =>
new Task((rej, res) => {
console.log('launch missiles!')
res('missile')
}) const app = launchMissiles().map(x => x + '!') app
.map(x => x + '!')
.fork(e => console.error('err', e),
x => console.log('success', x)) //launch missiles!
success

最新文章

  1. avl树的操作证明
  2. Crypto++ 动态链接编译与实例测试
  3. LeetCode 5 Longest Palindromic Substring(最长子序列)
  4. 使用TextWatcher监听EditText变化
  5. [leetcode]_Palindrome Number
  6. python 内建函数 type() 和 isinstance() 介绍
  7. QAQ数论模板笔记√
  8. Tomcat详解
  9. 《SDN核心技术剖析和实战指南》3.3读书笔记
  10. stuts1:(Struts)Action类及其相关类
  11. swift新特性(__nullable和__nonnull
  12. 文本主题模型之LDA(三) LDA求解之变分推断EM算法
  13. SSM框架整合环境构建——基于Spring4和Mybatis3
  14. useBean
  15. 4.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—目录结构
  16. GlusterFS分布式存储系统中更换故障Brick的操作记录1
  17. 把 java web application deploy 到 root
  18. 怎么隐藏服务器的IP地址?
  19. stm32的双向io口
  20. django的用户认证组件

热门文章

  1. ByteUtils
  2. activity 接回返回值
  3. js全选反选按钮实现
  4. vue打包添加样式兼容前缀
  5. 【hdu 6181】Two Paths
  6. POJ——T2271 Guardian of Decency
  7. Linux中删除文件,磁盘空间未释放问题追踪
  8. 微信支付v2开发(9) 标记客户投诉处理状态
  9. C# C++ 字符串传递
  10. 原生js大总结七