Ожидайте отложенного конструктора, асинхронного конструктора
Это возможно в iced coffee script
сделать асинхронный конструктор:
class Animal
constructor: (autocb) ->
#some async action here
И назовите это как:
await new Animal, defer(animal)
Когда я пытаюсь это сделать, появляется ошибка:
unexpected ,
1 ответ
В CoffeeScript запятые используются в качестве разделителей для аргументов. Например:
add 2, 3
При желании вы можете поставить круглые скобки вокруг аргументов, чтобы сделать их более явными:
add(2, 3)
Однако вы не можете ставить запятую между функцией и аргументами:
add, 2, 3 # not allowed
add(, 2, 3) # can you see your mistake?
То же самое касается функций конструктора:
new Animal defer(animal) # this is ok
new Animal(defer(animal)) # defer(animal) is just an argument
Однако вы не можете поставить запятую между new Animal
и первый аргумент:
new Animal, defer(animal) # not allowed
new Animal(, defer(animal)) # can you see your mistake?
То же самое касается await
:
await new Animal defer(animal) # this is ok
await new Animal(defer(animal)) # again defer(animal) is just an argument
Однако вы не можете поставить запятую между функцией и первым аргументом:
await new Animal, defer(animal) # not allowed
await new Animal(, defer(animal)) # can you see your mistake?
Итак, чтобы ответить на ваш вопрос: да, можно сделать асинхронный конструктор в сценарии со льдом кофе. Как и во всех асинхронных функциях, последний аргумент всегда должен быть функцией обратного вызова, сгенерированной defer
,
В следующий раз, когда компилятор скажет unexpected ,
просто удалите запятую. Это так просто.