• Как отменять связанные цепочки действий в асинхронном приложении?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Это все просто, если мы говорим об одном действии, и его отмене. А если речь идет о цепочке действий?
    В том сценарии, что вы описали, просто не нужно использовать оптимистичный интерфейс.
    Да это и невозможно - как переместить файл в папку не зная её id? На клиенте, это, положим, реализовать можно, но отправить запрос сохранения на сервер - уже нет.

    В данном случае придётся скорость работы интерфейса приносить в жертву упрощению кода и здравому смыслу.
    Идеальный вариант - показать папку сразу, но явно выделить её как "загружающуюся".
    Возьмём, например, веб-интерфейс Я.Диска: там реализована именно такая логика. Очевидно, что у Яндекса есть возможность потратить деньги и силы на реализацию "очередей атомарных операций", но они решили, что оно того не стоит.

    И часто такой интерфейс может отстрелить пользователю ногу. Вы услужливо дали ему наизменять структуру директорий, а потом оказалось, что нужно отматывать всё к самому началу. Как думаете, пользователь в этот момент подумает "Ну, по крайней мере интерфейс не тормозил, когда я всё это делал" или всё-таки что-то другое?
    Ответ написан
    2 комментария