문제

Is it possible in iced coffee script to make async constructor:

class Animal
  constructor: (autocb) ->
    #some async action here

And call it like:

await new Animal, defer(animal)

When I try to do it, got error:

unexpected ,
도움이 되었습니까?

해결책

In CoffeeScript commas are used as separators for arguments. For example:

add 2, 3

Optionally you may put parentheses around arguments to make it more explicit:

add(2, 3)

However you may not put a comma between the function and the arguments:

add, 2, 3   # not allowed
add(, 2, 3) # can you see your mistake?

The same goes for constructor functions:

new Animal defer(animal)  # this is ok
new Animal(defer(animal)) # defer(animal) is just an argument

However you can't put a comma between new Animal and the first argument:

new Animal, defer(animal)   # not allowed
new Animal(, defer(animal)) # can you see your mistake?

The same goes for await:

await new Animal defer(animal)  # this is ok
await new Animal(defer(animal)) # again defer(animal) is just an argument

However you can't put a comma between the function and the first argument:

await new Animal, defer(animal)   # not allowed
await new Animal(, defer(animal)) # can you see your mistake?

So to answer your question: yes, it is possible to make an async constructor in iced coffee script. Like all asynchronous functions the last argument must always be the callback function generated by defer.

Next time when the compiler says unexpected , just remove the comma. It's as simple as that.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top