mirror of
https://github.com/Microsoft/vscode
synced 2024-09-13 21:55:38 +00:00
Use Promise.all to perform config finding in parallel instead of sequentially
For #87494
This commit is contained in:
parent
bf2448549d
commit
017a42552b
|
@ -9,6 +9,7 @@ import * as vscode from 'vscode';
|
||||||
import * as nls from 'vscode-nls';
|
import * as nls from 'vscode-nls';
|
||||||
import { wait } from '../test/testUtils';
|
import { wait } from '../test/testUtils';
|
||||||
import { ITypeScriptServiceClient, ServerResponse } from '../typescriptService';
|
import { ITypeScriptServiceClient, ServerResponse } from '../typescriptService';
|
||||||
|
import { coalesce, flatten } from '../utils/arrays';
|
||||||
import { isTsConfigFileName } from '../utils/languageDescription';
|
import { isTsConfigFileName } from '../utils/languageDescription';
|
||||||
import { Lazy } from '../utils/lazy';
|
import { Lazy } from '../utils/lazy';
|
||||||
import { isImplicitProjectConfigFile } from '../utils/tsconfig';
|
import { isImplicitProjectConfigFile } from '../utils/tsconfig';
|
||||||
|
@ -103,17 +104,14 @@ class TscTaskProvider implements vscode.TaskProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
private async getAllTsConfigs(token: vscode.CancellationToken): Promise<TSConfig[]> {
|
private async getAllTsConfigs(token: vscode.CancellationToken): Promise<TSConfig[]> {
|
||||||
const out = new Set<TSConfig>();
|
const configs = flatten(await Promise.all([
|
||||||
const configs = [
|
this.getTsConfigForActiveFile(token),
|
||||||
...await this.getTsConfigForActiveFile(token),
|
this.getTsConfigsInWorkspace(token),
|
||||||
...await this.getTsConfigsInWorkspace(token)
|
]));
|
||||||
];
|
|
||||||
for (const config of configs) {
|
return Promise.all(
|
||||||
if (await exists(config.uri)) {
|
configs.map(async config => await exists(config.uri) ? config : undefined),
|
||||||
out.add(config);
|
).then(coalesce);
|
||||||
}
|
|
||||||
}
|
|
||||||
return Array.from(out);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async getTsConfigForActiveFile(token: vscode.CancellationToken): Promise<TSConfig[]> {
|
private async getTsConfigForActiveFile(token: vscode.CancellationToken): Promise<TSConfig[]> {
|
||||||
|
|
Loading…
Reference in a new issue