问题
I used node.js(0.11.13) with --harmony
flag and used function *()
and yield
keywords.
I tried to simplify my development on node.js with help of coffeescript, so far it works great but I went into troubles with yield
and declaring a generator - it complains about 'reserved keyword yield'.
Any ideas?
回答1:
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
回答2:
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
回答3:
Use (for example) my fork: https://github.com/xixixao/coffee-script
There are other ones with different syntax.
回答4:
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
来源:https://stackoverflow.com/questions/24700210/how-to-enable-harmony-syntax-support-in-coffeescript