麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

關于NodeJS中的循環引用詳解

2019-11-19 11:09:14
字體:
來源:轉載
供稿:網友

最近在用node的時候排查一個問題排查了半天,最終發現是循環引用導致的問題,故在此記錄一下。

場景復現

出現問題場景比較簡單,一共四個類:

  • parent.ts
  • child.ts
  • child_2.ts
  • util.ts
export abstract class Parent { abstract hello(): string;}
import {Parent} from "./parent";export class Child extends Parent { hello(): string {  return "child"; }}
import {Child} from "./child";export class Util { static useChildInSameCase(): string {  let child: Child;  return child.hello(); }}
import {Parent} from "./parent";export class Child_2 extends Parent { hello(): string {  return "child_2"; }}

這個時候我們去構造一個Child類:

import {Child} from "./child";console.log(new Child().func());

就會直接報錯了:

class Child_2 extends parent_1.Parent {
^

TypeError: Class extends value undefined is not a function or null

#尋找原因

說的是這個父類是一個undefined,很明顯就是沒有初始化。

一開始我覺得很奇怪,明明在child_2這個文件里已經import了parent,為什么會是undefined呢?后來debug查了一下代碼的堆棧,恍然大悟:

入口文件->child.ts->parent.ts->util.ts->child_2.ts->parent.ts

很明顯這里存在著一個循環引用,當我們在加載child_2.ts這個文件的時候,parent.ts還處在未加載完的狀態。

我們可以去 官網看一下node中是如何處理循環引用的

通過官網我們可以知道,對于這樣的循環引用,在child_2.ts加載parent.ts的時候,會去緩存中尋找,而由于parent.ts還未加載完成,所以緩存中會是一個空對象了,官網中用的語句是 an unfinished copy of the a.js 。

解決方案

知道原因之后,解決方案也就變得清晰了起來,一句話搞定,將parent.ts中的import語句放在后面:

export abstract class Parent {  abstract hello(): string;  func(): string {    return Util.useChildInSameCase();  }}import {Util} from "./util";

這樣在加載parent.ts的時候,就會先export對象,然后再import所需要的util.ts了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色一级片在线观看 | 国产午夜精品一区二区三区免费 | 色毛片| 热99视频 | av不卡免费在线观看 | 999精品国产 | 高清视频一区二区 | 国产一级毛片不卡 | 天堂亚洲一区 | av性色全交蜜桃成熟时 | 视频一区国产精品 | 久久久一区二区三区四区 | 欧美www| 136福利视频 | 日本一道aⅴ不卡免费播放 视屏一区 | 欧美精品v国产精品v日韩精品 | 欧美a黄 | 中国大陆高清aⅴ毛片 | 精品一区二区在线观看视频 | 国产精品高潮视频 | 国产精品aⅴ | 国产成人高潮免费观看精品 | 香蕉视频99 | 亚洲激情91 | 九九热精品在线播放 | 俄罗斯hdxxx| 久久精品无码一区二区日韩av | 国产精品久久久久久久四虎电影 | 2019天天干夜夜操 | 91精品国产91久久久久久蜜臀 | a级高清免费毛片av在线 | 日本高清一级片 | 成人福利在线播放 | 国产毛片自拍 | 久久亚洲一区二区三区成人国产 | 偿还的影视高清在线观看 | 国产午夜精品一区二区三区在线观看 | lutube成人福利在线观看污 | 久国产 | 曰批全过程120分钟免费69 | 九色中文字幕 |