From 08c7cc09183318422b1dd04b180b1fe8509c82e6 Mon Sep 17 00:00:00 2001 From: Yurong He <43652751+YurongHe@users.noreply.github.com> Date: Tue, 12 Mar 2019 13:06:02 -0700 Subject: [PATCH] Fixed #4384 add await on disconnect (#4389) * Fixed #4384 add await on disconnect * Resolve PR comment --- src/sql/parts/notebook/models/notebookModel.ts | 4 ++-- src/sql/parts/notebook/notebookUtils.ts | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/sql/parts/notebook/models/notebookModel.ts b/src/sql/parts/notebook/models/notebookModel.ts index a61acca060..40c8bf53a1 100644 --- a/src/sql/parts/notebook/models/notebookModel.ts +++ b/src/sql/parts/notebook/models/notebookModel.ts @@ -712,11 +712,11 @@ export class NotebookModel extends Disposable implements INotebookModel { if (this.notebookOptions && this.notebookOptions.connectionService) { let connectionService = this.notebookOptions.connectionService; if (this._otherConnections) { - this._otherConnections.forEach(conn => connectionService.disconnect(conn).catch(e => console.log(e))); + notebookUtils.asyncForEach(this._otherConnections, async (conn) => await connectionService.disconnect(conn).catch(e => console.log(e))); this._otherConnections = []; } if (this._activeConnection) { - this.notebookOptions.connectionService.disconnect(this._activeConnection).catch(e => console.log(e)); + await this.notebookOptions.connectionService.disconnect(this._activeConnection).catch(e => console.log(e)); this._activeConnection = undefined; } } diff --git a/src/sql/parts/notebook/notebookUtils.ts b/src/sql/parts/notebook/notebookUtils.ts index ba9e326f4e..8008c1b94f 100644 --- a/src/sql/parts/notebook/notebookUtils.ts +++ b/src/sql/parts/notebook/notebookUtils.ts @@ -59,7 +59,7 @@ export function getProvidersForFileName(fileName: string, notebookService: INote return providers; } -export function getStandardKernelsForProvider(providerId: string, notebookService: INotebookService) : IStandardKernelWithProvider[] { +export function getStandardKernelsForProvider(providerId: string, notebookService: INotebookService): IStandardKernelWithProvider[] { if (!providerId || !notebookService) { return []; } @@ -91,7 +91,7 @@ export function getServerFromFormattedAttachToName(name: string): string { // Extract database name from format used in Attach To: serverName (databaseName) export function getDatabaseFromFormattedAttachToName(name: string): string { return name.substring(name.lastIndexOf('(') + 1, name.lastIndexOf(')')) ? - name.substring(name.lastIndexOf('(') + 1, name.lastIndexOf(')')) : ''; + name.substring(name.lastIndexOf('(') + 1, name.lastIndexOf(')')) : ''; } export interface IStandardKernelWithProvider { @@ -116,4 +116,10 @@ export function tryMatchCellMagic(input: string): string { let match = magicRegex.exec(firstLine); let magicName = match && match[1]; return magicName; +} + +export async function asyncForEach(array: any, callback: any): Promise { + for (let index = 0; index < array.length; index++) { + await callback(array[index], index, array); + } } \ No newline at end of file