Как CoffeeScript обрабатывает асинхронные вызовы? - PullRequest
2 голосов
/ 20 июня 2011

Текущие асинхронные вызовы JavaScript требуют от нас использования функции обратного вызова.Это может привести к «кроличьей норе» кода, когда вам нужно сделать второй Ajax-вызов на основе данных, возвращенных в 1-м Ajax-вызове.

Были попытки сделать асинхронные вызовы JavaScript без использования Callbacks.Google, Narative.js.Целью является более управляемый и читаемый код.

Мой вопрос: как CoffeeScript обрабатывает асинхронные вызовы JavaScript, такие как Ajax?Требуются ли обратные вызовы или можно выполнять асинхронные вызовы без обратных вызовов?

Ответы [ 4 ]

2 голосов
/ 20 июня 2011

CoffeeScript не предлагает каких-либо конкретных функций, направленных на асинхронность, потому что это обязательно вызовет большой разрыв между кодом CoffeeScript и выводом JavaScript.См. Обсуждение предлагаемого синтаксиса defer:

https://github.com/jashkenas/coffee-script/issues/350

Итак, если вы используете CoffeeScript, вы должны иметь дело с асинхронным поведением, используя те же идиомы и библиотеки, что и в JavaScript.Разница в том, что ваши обратные вызовы будут записаны как -> ..., а не function() {...}.

1 голос
/ 20 июня 2011

Coffeescript - это язык, который, по мнению некоторых, яснее, лаконичнее и легче писать и читать, чем Javascript Coffeescript компилируется в Javascript, который затем запускается на виртуальной машине Javascript. В конце концов, Coffeescript может делать только то, на что способен Javascript.

Как CoffeeScript обрабатывает асинхронные вызовы?

Как и Javascript. Если вы хотите использовать обратные вызовы, используйте обратные вызовы. Если вы хотите использовать Narative.js, используйте это. Если вы хотите использовать Jquery, используйте это.

0 голосов
/ 02 февраля 2015

Возможно, вы захотите принять https://github.com/mirek/node-flat-flow подход, чтобы сделать цепочку вызовов плоской. Очень хорошо работает с coffeescript.

0 голосов
/ 20 июня 2011

вы можете использовать jquery $. Когда (не зависит от сценария кофе), чтобы прояснить ситуацию.

var firstCall = $.get 'stuff.json'
$.when(firstCall).then #make second call
...