2015-12-06 4 views
0

Я создаю небольшой модальный пакет, и я хотел бы иметь свободный api, один из вещей, который я хотел бы сделать, функция анимации в методе close и вызывается метод после того, как он запускается только после завершения дополнительной анимации.Откладывание возврата функции в свободном API JavaScript

a) Я думаю об этом правильно?
b) Должен ли я использовать обратный вызов?
c) Есть ли альтернатива использованию setTimeout? (Я не знаю, почему это кажется грязным, но это так) d) Я полагаю, что обещания - это варианты, но это нарушит синтаксис.

То, что я хотел бы посадить вверх с:

Modal.save().close().resetData(); 
+1

А что вы имеете в виду * «безрассудство» *, вы на самом деле означает откладывая, и что вы подразумеваете под * «Свободный API» *, это что-то особенное, что важно здесь? – adeneo

ответ

1

а) Я думал об этом правильно?

Да.

b) Должен ли я использовать обратный вызов ?

Да, без проблем с этим подходом.

c) Есть ли альтернатива использованию setTimeout? (Я не знаю, почему это чувствует себя грязным, но он делает)

Для анимации, либо использовать CSS переходы или requestAnimationFrame, а не setTimeout.

d) Я полагаю, что обещания - это опции , но это нарушит синтаксис.

Вы можете реорганизовать обещания, когда у вас есть работа. Обещания предлагают более свободный API.

С обратного вызова подход, я бы ожидать, что она выглядит следующим образом:

function close(done) { 
    // do something async then call `done` 
} 

Modal.save(close.bind(Modal, resetData)); 
+0

Спасибо, ben, thats полезно в начале, относительно c) при использовании переходов requestAnimationFrame и CSS вы говорите, что это способ узнать, когда анимация завершена? или я все еще буду устанавливать какой-то таймер? – pushplaybang

+0

При использовании RAF конец очевиден. Я не уверен в событиях перехода css. – Ben

Смежные вопросы