<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 循環依賴 當兩個類互相依賴時就會出現循環依賴. 例如,當 `A` 類需要 `B` 類,而 `B` 類也需要 `A` 類時,就會產生**循環依賴**。`Nest` 允許在提供者( `provider` )和模塊( `module` )之間創建循環依賴關系. 建議盡可能避免循環依賴。但是有時候難以避免,Nest提供了兩個方法來解決這個問題.本章中我們提供了兩種技術,即`正向引用(forward reference)`和`模塊引用(ModuleRef)`來從注入容器中獲取一個提供者。 我們也討論了在模塊間處理循環依賴的問題。 > 循環依賴也可以使用`封裝桶文件/index.ts`文件成組導入。桶(Barrel)文件應該從模塊/類中省略掉。例如,當在同一個目錄下作為桶文件導入時不應使用桶文件,例如,cats/cats.controller不應該導入cat到cats/cats.service文件。更多內容參見[github issue](https://github.com/nestjs/nest/issues/1181#issuecomment-430197191) ### 前向引用 **前向引用**允許 `Nest` 引用目前尚未被定義的引用。當`CatsService` 和 `CommonService` 相互依賴時,關系的雙方都需要使用 `@Inject()` 和 `forwardRef()` ,否則 `Nest` 不會實例化它們,因為所有基本元數據都不可用。讓我們看看下面的代碼片段: > cats.service.ts ```typescript @Injectable() export class CatsService { constructor( @Inject(forwardRef(() => CommonService)) private readonly commonService: CommonService, ) {} } ``` > `forwardRef()` 需要從 `@nestjs/common` 包中導入的。 這只是關系的一方面。現在讓我們對 `CommonService` 做同樣的事情: > common.service.ts ```typescript @Injectable() export class CommonService { constructor( @Inject(forwardRef(() => CatsService)) private readonly catsService: CatsService, ) {} } ``` !> 實例化的順序是不確定的。確保您的代碼不依賴于首先調用哪個構造函數。具有循環依賴依賴于提供者`Scope.REQUEST`可能會導致未定義的依賴。更多信息[在這里](https://github.com/nestjs/nest/issues/5778) ### 可選的模塊引用(`ModuleRef`)類 一個選擇是使用`forwardRef()`來重構你的代碼,并使用`ModuleRef`類來在循環引用關系一側獲取提供者。更多關于`ModuleRef`類的內容參考[這里](https://docs.nestjs.com/fundamentals/module-ref)。 ### 模塊前向引用 為了處理模塊( `module` )之間的循環依賴,必須在模塊關聯的兩個部分上使用相同的 `forwardRef()`: > common.module.ts ```typescript @Module({ imports: [forwardRef(() => CatsModule)], }) export class CommonModule {} ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看