diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2019-04-24 03:26:02 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2019-04-24 03:26:02 +0900 |
| commit | 701ab6cc6826a2e272d614fae97e7058110f1e1f (patch) | |
| tree | f7a6a1dbd4fb8813139bd0d8e5e1d7d6074fef5d /src | |
| parent | メンテナ名を必須でなくす (diff) | |
| download | misskey-701ab6cc6826a2e272d614fae97e7058110f1e1f.tar.gz misskey-701ab6cc6826a2e272d614fae97e7058110f1e1f.tar.bz2 misskey-701ab6cc6826a2e272d614fae97e7058110f1e1f.zip | |
Refactor
Diffstat (limited to 'src')
| -rw-r--r-- | src/prelude/await-all.ts | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/prelude/await-all.ts b/src/prelude/await-all.ts index 66303fe3ba..9492550483 100644 --- a/src/prelude/await-all.ts +++ b/src/prelude/await-all.ts @@ -7,16 +7,17 @@ type AwaitAll<T> = { export async function awaitAll<T>(obj: T): Promise<AwaitAll<T>> { const target = {} as any; const keys = Object.keys(obj); - const rawValues = Object.values(obj); - const retValues = ((values: any[]): any[] => - values.map(value => { - if (!value || !value.constructor || value.constructor.name !== 'Object') return value; - return awaitAll(value); - }) - )(rawValues); - const values = await Promise.all(retValues); - for (let i = 0; i < values.length; i++) { - target[keys[i]] = values[i]; + const values = Object.values(obj); + + const resolvedValues = await Promise.all(values.map(value => + (value || !value.constructor || value.constructor.name !== 'Object') + ? value + : awaitAll(value) + )); + + for (let i = 0; i < keys.length; i++) { + target[keys[i]] = resolvedValues[i]; } + return target; } |