Ответ второго jdk: любой публичный статический член любого класса вашего приложения можно рассматривать как «глобальную переменную».
Однако обратите внимание, что это приложение ASP.NET, и как такой, это многопоточный контекст для ваших глобальных переменных. Поэтому вам следует использовать механизм блокировки при обновлении и / или чтении данных в / из этих переменных. В противном случае вы можете получить свои данные в поврежденном состоянии.
И, возможно, если мы создадим обещание и не разрешим его, это приведет к утечке памяти?
blockquote>Только если кто-то будет висеть на возвращенном обещании, ожидая, что оно разрешится. .
Но это то же самое для .then (), т.е. если мы ничего не возвращаем в нашем .then и аналогично, если мы вызываем функцию, которая устанавливает такие вещи, как res.status () и отправляет res.send () [ 1116] blockquote>
Ничего не возвращать из обработчика
.then()
- это прекрасно, если пользователь обещания не ожидает разрешенного значения. Это просто оставляет разрешенное значение обещания какundefined
.Рассмотрим этот маршрут Api и Middleware
blockquote>Это прекрасно. Вы используете
.then()
и.catch()
, чтобы узнать, когда выполняется асинхронная операция, и затем вы отправляете ответ в любом случае. Ничто не использует последнее обещание, поэтому не имеет значения, какова его разрешенная ценность.Это [errorStatusCodeAndResponseEventbriteLoggedInUser function] нормально?
blockquote>Это немного странно и имеет некоторые проблемы. Это будет генерировать предупреждения о необдуманных отклонениях в некоторых реализациях. Похоже, что вы делаете что-то вроде запуска и забывания, когда звоните
FirebaseHelper.updateDataInDb()
, где вы ничего не делаете с результатом, независимо от того, успешен он или нет. Мне не ясно, почему или каково ваше намерение для этого. Если это просто какая-то запись в журнале, то, возможно, я мог бы понять (я бы все равно поставил.then()
на него, а неthrow
из.catch()
, когда ничего не слушал). Но, если это не предполагается реализацией «забыл и забыл», вы продолжаете, не дожидаясь завершения операции.И, наконец, в моем токене обновления встречи
blockquote>.then()
я ничего не возвращаю.Как я уже говорил выше, единственное время, когда не возвращается что-то из обработчика
.then()
, это проблема, когда кто-то использует возвращенное обещание и ожидает разрешенного значения. Если вызывающая сторона не ожидает разрешенного значения, возвращать его не нужно. Разрешенное значение будет простоundefined
, что прекрасно в Javascript.Эта конструкция:
.catch(err => {throw err})
бессмысленна. Ваш код работает так же без этого. Либо сделайте что-нибудь полезное в обработчике
.catch()
, либо опустите его и дайте ему возможность обратиться к вызывающей стороне.Кроме того, в вашей последней функции вы снова не дожидаетесь завершения
FirebaseHelper.updateDataInDb()
, так что это по сути новая цепочка обещаний без связи, которая действует в режиме «забей и забудь». Это может создать предупреждения для необоснованных отклонений. Как правило, это не очень хорошая практика, так как молча терпит неудачу, и никто никогда не узнает об этом и ничего не ждет.