#promise #es6-promise #angular-promise
#обещание #es6-обещание #angular-обещание
Вопрос:
У меня есть приведенный ниже код, который вызывает службу для получения некоторых значений, я сознательно отключил серверную часть, чтобы проверить, добавляется ли ошибка. Я заметил, что он дважды вызывает сервис, может кто-нибудь объяснить мне, почему это происходит?
(async () => {
try {
this.countries = await this.testerSvc.getCountries().toPromise();
} catch (err) {
this.addError("Countries");
}
})();
Сервисный код:
getCountries() {
return this.http.get<[]>(this.baseUrl "countries");
}
Комментарии:
1. Куда именно вы поместили код из своего первого фрагмента?
2. @Bergi Это внутри конструктора моего компонента.
3. Итак, что-то создает экземпляр этого компонента дважды. Однако я бы рекомендовал избегать помещения асинхронных побочных эффектов в конструктор.
4. Нашел мою проблему. Я добавил свой компонент в раздел начальной загрузки app.module.ts: bootstrap: [AppComponent, MyComponent]. Я удалился оттуда, и теперь он вызывает сервис только один раз. Спасибо!
Ответ №1:
В моем app.module.ts я добавил свой компонент:
bootstrap: [AppComponent, MyComponent]
На моем app.component.html , у меня было
<app-tester> </app-tester>
Он создавал экземпляр моего компонента дважды, я удалил его из начальной загрузки, и теперь он создается только один раз. Таким образом, вызов службы выполняется только один раз.