CoffeeScript 1.9 开始提供了类似ES6的yield关键字。 自己结合co和bluebird做了个试验。

co -- http://npmjs.org/package/co  -- for generator

bluebird -- https://www.npmjs.com/package/bluebird  for Promise

co = require 'co'
Promise = require 'bluebird'msg = "good"
func1 = () ->new Promise((resolve)->setTimeout(()->console.log "func1"resolve({a:10,b:2}), 1000))func2 = (opts) ->{a,b}= optsnew Promise((resolve, reject)->setTimeout(()->console.log "func2", a, bconsole.log msgresolve(a * b * 2), 1000))func3 = (r)->new Promise((resolve)->console.log "the result is #{r}"resolve())
func4 = ()->new Promise (resolve)->console.log "done"resolve()calc1= (r) ->yield func3(r)yield func4()calc = ()->opts = yield func1()r = yield func2(opts)yield calc1(r)
#  yield func3(r)
#  yield func4()co(calc) 

转载于:https://www.cnblogs.com/buhaiqing/p/5385435.html

[CoffeeScript]使用Yield功能相关推荐

  1. 了解多线程中的yield

    2019独角兽企业重金招聘Python工程师标准>>> 最近在学习多线程这一块,发现里面有好多让人产生误区的地方,今天我来分析下java多线程中的yield功能,希望其他朋友也可以从 ...

  2. [转载] 【零基础学爬虫】python中的yield详解

    参考链接: 什么时候在Python中使用yield而不是return python中的yield功能比较强大,什么意思呢?如果一个函数f内使用了yield关键词,那么该函数就可以这样使用: for i ...

  3. java登录功能多线程_java之多线程

    线程的生命周期: 当线程被创建并被启动时,它既不是一启动就进入了执行状态,在线程的生命周期中,它要经过new(新建),就绪(Runnable),运行(Running),阻塞(Blocked),dead ...

  4. 【Python】一篇文章读懂yield基本用法

    这一次,田辛老师想通俗易懂地解释一下Python中的yield功能. 本文要说明以下四个问题: yield是什么 什么是迭代器和生成器 yield的基本用法 如何使用yield from 用真正简单的 ...

  5. python线程池模块_python并发编程之进程池,线程池,协程

    需要注意一下 不能无限的开进程,不能无限的开线程 最常用的就是开进程池,开线程池.其中回调函数非常重要 回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去 ...

  6. Python(迭代、三元表达式、列表生成、生成器、迭代器)

    迭代 什么是迭代1 重复2 下次重复一定是基于上一次的结果而来 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). 在 ...

  7. 使用Stream API的类Java产量

    几种编程语言(例如Ruby或Python等)提供yield命令. 在内存消耗方面,Yield提供了一种有效的方式,可以通过按需生成值来创建一系列值. 有关Python产量的更多信息. 让我们考虑一个需 ...

  8. python线程池模块_python并发编程之进程池,线程池,协程(Python标准模块--concurrent.futures(并发未来))...

    需要注意一下 不能无限的开进程,不能无限的开线程 最常用的就是开进程池,开线程池.其中回调函数非常重要 回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去 ...

  9. 生成器案例,#采集日志

    生成器: 只要在函数体中看到yield,那么这个函数就是生成器. yield功能: 1:为我们提供了一种自定义迭代器对象的方法 2:yield其实也是一种返回值,他和return的区别就是:他可以返回 ...

最新文章

  1. [译]Mimic, 轻量级Web Service测试桩
  2. C#Project不生成.vhost.exe和.pdb文件的方法
  3. Android ListView 圆角
  4. nginx中configure脚本支持的常用选项,拍摄自《Nginx高性能Web服务器详解》
  5. 定时执行程序-Quartz简单实例
  6. ActiveMQ的安全配置(九)
  7. [Java基础]File基础
  8. C语言无符号数运算问题
  9. 阿里P8架构师谈:数据库、JVM、缓存、SQL等性能调优方法和原则
  10. visual studio code typescript 防止 import statement 断行
  11. TensorFlow入门篇(三):MNIST数据集简易分类
  12. ZED2+ORB_SLAM3
  13. C++读写ini配置文件
  14. msdia80.dll是什么文件?msdia80.dll文件缺失怎么修复?
  15. windows memcached php扩展,Memcached 的学习:windows下php开memcached扩展
  16. Linux elf可执行文件加密
  17. 一文告诉你大数据是什么
  18. 速算24点(C++)
  19. LeetCode 176 第二高的薪水
  20. SD卡驱动(基于XS128)

热门文章

  1. 死锁、EAT、页表、单双缓冲区典型题目及解析
  2. 7-6 考试座位号 15 分 C语言代码,PAT Basic 1041. 考试座位号(15)(C语言实现)
  3. Qt_数据库基本操作(未完成)
  4. mysql undrop_MySQL · 数据恢复 · undrop-for-innodb
  5. linux如何查看jupyter日志_在Linux服务器上运行Jupyter notebook server教程
  6. ocx控件 postmessage消息会消失_通过HackerOne漏洞报告学习PostMessage漏洞实战场景中的利用与绕过...
  7. php不用框架怎么写,php框架不用写sql语句就能调用数据库里表的字段是怎么实现的...
  8. HDU-2602-Bone Collector(dp)
  9. ubuntu16.04安装NIVIDIA显卡驱动,cuda8.0,cuDNN6.0以及基于Anaconda安装Tensorflow-GPU
  10. 亚信安全首推MSP创新型合作伙伴业务模式 助力企业畅享云端快捷服务