Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Не редко приходится встречать утверждение, что Deferred может использоваться не только вкупе с асинхронными функциями, но и с синхронными. На данный момент я не встречал задач, где это может пригодиться.
a = ->
123
b = ->
dfd = new $.Deferred()
dfd.resolve 123
dfd.promise()
# работа с синхронной функцией
$.when(a).then ->
# аналогична работе с promise
$.when(b).then ->
1) Мое мнение, что более чистый и лаконичный синтаксис КофеСкрипт идеально подходит для иллюстрирования идеи.
window.log = () => console.log(...arguments);
for (var _i = 0; _i < 10; ++_i) {
let index = _i;
setTimeout(() => log(index), 1000);
}
setTimeout, в КофеСкрипте лучше смотрится его алиас after = (ms, fn) -> setTimeout(fn, ms):after 1000, ->
log index
dfd.resolve()
… А во-вторых — целевая аудитория, которую я наметил — именно приверженцы руби.
Ещё раз о Deferred/Promise