Лучшие практики NodeJS с обещаниями
Я разрабатываю новую библиотеку выше amqp.node (amqplib), в основном нам не нужны все функциональные возможности RabbitMQ. Итак, я создаю простую библиотеку, которая облегчает использование специально для нашего проекта.
Эта новая библиотека вернет Обещания. Так, например, подписка на очередь вернет Promise о Ok и Error. Но что мне делать с более поздними выпусками? Отключить, восстановить, очередь удалена и т. Д. И т. Д.? Это произойдет после того, как обещание было решено. Должен ли мой новый класс испускать свои собственные ошибки? Это хороший способ работы с обещаниями?
2 ответа
Обещания являются одним выстрелом устройства. Таким образом, они являются только правильным средством проектирования для одноразового перехода состояния. После того, как они были разрешены или отклонены, они блокируются в этом состоянии. После этого у вас либо должны появиться новые обещания для новых операций, либо обещания не совсем правильная схема, и вы бы предпочли что-то вроде уведомления о событии.
Таким образом, если у вас может быть отключение, затем повторное подключение, затем отключение и т. Д., Вам придется либо создавать новое обещание для каждого перехода состояния, либо обещания на самом деле не являются самой простой реализацией, и вам действительно нужно просто возможность подписывать слушателей на различные события (производные от eventEmitter и генерировать интересные события, которые могут слушать другие).
Я не утверждаю, что точно понимаю, что вы пытаетесь построить, но некоторые части вашего описания звучат так, как будто вы хотите больше схемы уведомлений о событиях для большей части вашего проекта, чем для обещаний.
К вашему сведению, вот несколько интересных статей о различных схемах уведомлений:
Обратные звонки, обещания, сигналы и события
Вот рекомендации, которым вы можете следовать для выполнения обещаний:
Также вы можете ссылаться или использовать эти -> q библиотеки обещаний, которые создаются на основе приведенных выше рекомендаций.