我正在为我们的应用程序中使用的redission客户端编写适配器,我不确定在finalize块中关闭客户端是否是一个好的设计。下面是代码。请让我知道
fileDetails: any = {
clientDoc: {}
};
uploadClientDoc(event) {
this.fileDetails.clientMandateForm = event.srcElement.files[0];
this.submitFlag = this.fileDetails.isdaFile ? true : false;
}
submit() {
let formData: FormData = new FormData();
formData.append('clientDoc', this.fileDetails.clientDoc);
var data = this.urService.uploadFiles(formData).subscribe(res => {
//your login
});
}
uploadFiles(data) {
const httpOptions = {
headers: new HttpHeaders({
'Accept': 'application/json',
'Access-Control-Allow-Origin': '*',
'Content-Type': 'multipart/form-data'
})
};
return this.http.post('<url>', data, httpOptions);
}
<div>
<label>Please Select Document</label>
<label class="type-file">+ Upload FIle
<input type="file" accept="application/pdf" id="my_file1" (change)="uploadClientDoc($event)" />
</label>
<label >{{fileDetails.clientDoc.name}}</label>
</div>
<button class="ci-btn float-right-btn" type="button" (click)="submit()" value="Submit">Submit</button>
编辑:我有兴趣知道在Web应用中关闭静态最终连接对象的正确设计。我无法在方法的finally块中关闭它,因为客户端将被多个类中的多个方法使用
答案 0 :(得分:1)
您不应该依赖关闭客户端的finalize()
方法 - 您应该确保在其他位置关闭它。 finalize()只会在对象被垃圾收集时被调用,这可能在客户端应该关闭之后很久(并且可能永远不会,取决于程序的生命周期和gc选项。)
由于这个原因,许多人将完全摆脱finalize()方法。
如果您确实将其保留在那里,那么只需将其视为备份以捕获上游的编码错误。首先检查客户端是否已关闭,如果没有,请确保打印出一条警告消息,指出您有一个需要解决的错误!