@sallyruthstruik

Синхронизация функций в JSDeferred

Начал разбираться с библиотекой. Почему может не работать такой код?

Deferred = (require './libs/jsdeferred.js').Deferred

Deferred.define()

func = (s, t)->
	def = new Deferred()
	console.log "Im works"
	setTimeout(()->
		console.log s
	, t)
	return def
next(()->
	return func("Hello", 3000)
).next(()->
	return func("World", 1000)
)


В ответ получаю

$ coffee test.coffee 
Im works
Hello
  • Вопрос задан
  • 2872 просмотра
Решения вопроса 1
blo
@blo
инженер-программист
В коллбеке setTimeout нужно явно вызывать deferred.call

Попробуйте так
Deferred = (require './libs/jsdeferred.js').Deferred

Deferred.define()

func = (s, t)->
    def = new Deferred()
    console.log "Im works"
    setTimeout(()->
        console.log s
        def.call
    , t)
    return def
next(()->
    return func("Hello", 3000)
).next(()->
    return func("World", 1000)
)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы