How to enable harmony syntax support in coffeescript?

强颜欢笑 提交于 2019-12-03 07:56:45

Another way to open the gate to the black dimension is:

co = require 'co'
sleep = require 'co-sleep'

co(`function*(){1`
    console.log 'hi!'
    `yield sleep(1000)`
    console.log 'bye!'
`1}`)()

It's seems to be perfectly valid coffee-script, though, webstorm cofeescript plugin cries about errors, but it works.

Also the following solution(vanilla coffeescript and gulp) is possible:

co      = require 'co'
sleep   = require 'co-sleep'
$       = (cor) -> cor
$yield  = (cor) -> cor

do co $ ->
    console.log "hi!"
    $yield sleep(1000)
    console.log "bye!"

gulp.task 'node-js', ->
    gulp.src config.srcServerJs, {base: config.srcServerJsBase}
    .pipe plumb()
    .pipe coffee()
    .pipe replace(/\$\(function\(/g, '\$(function*(')
    .pipe replace(/\$yield\(/g, 'yield (')
    .pipe gulp.dest(config.dstServerJs)

magic: no errors in IDE :)

Update After trying and reading a lot of stuff about coffee, ecma6 and its future I decided to give up on coffeescript and go with ECMA6 with support of traceur for both node.js and client-side

It's actually now possible to use yield in coffeescript 1.9.x

from coffeescript's website

CoffeeScript functions also support ES6 generator functions through the yield keyword. There's no function*(){} nonsense — a generator in CoffeeScript is simply a function that yields.

example:

perfectSquares = ->
  num = 0
  loop
    num += 1
    yield num * num
  return

Use (for example) my fork: https://github.com/xixixao/coffee-script

There are other ones with different syntax.

Generators support (the yield keyword) landed in the master branch some time ago, but haven't been released yet.

You can get it via NPM and put as a dependency in package.json:

npm i jashkenas/coffeescript
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!