egg-multipart 中代码的分析(header)

来源:互联网 发布:vscode js代码高亮 编辑:程序博客网 时间:2024/05/17 04:33

Dicer.js 176 this._part = new PartStream(this._partOpts); this.emit(ev, this._part); 

this._part仅仅是一个stream readable接口如何解析headermultipart 里 this.parser = new Dicer(parserCfg); 里的parser变量是实例化一个DIcer,DIcer是一个集成WritableStream的类,这个类具有drain方法,drain是写入数据超过限制的方法。在Dicer中,通过StreamSearch解析boundary也就是header,然后设置Dicer里的_part变量为一个可读接口,触发这个变量的part方法,在multipart中利监听part方法,然后再监听part里的head方法,这是由Dicer里执行的_hparser决定,_hparser监听了header方法,解析了heder,触发_part里的header方法,也就是说HeaderParser里触发了header方法,被DIcer里的_hparser监听,再触发_part变量的header,被multipart方法监听,这样逐级上诉。