]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(build): avoid using async/await syntax
authorEvan You <yyx990803@gmail.com>
Fri, 2 Jul 2021 12:06:22 +0000 (08:06 -0400)
committerEvan You <yyx990803@gmail.com>
Fri, 2 Jul 2021 12:06:25 +0000 (08:06 -0400)
packages/runtime-core/src/apiSetupHelpers.ts

index c0eb905101c5893b4a10af5c292b319188a68b01..5bbcffd9575b08e0c8961ae7694a832db1f6f3fe 100644 (file)
@@ -1,3 +1,4 @@
+import { isPromise } from '../../shared/src'
 import {
   getCurrentInstance,
   SetupContext,
@@ -232,19 +233,22 @@ export function mergeDefaults(
  * Runtime helper for storing and resuming current instance context in
  * async setup().
  */
-export async function withAsyncContext<T>(
-  awaitable: T | Promise<T>
-): Promise<T> {
+export function withAsyncContext<T>(awaitable: T | Promise<T>): Promise<T> {
   const ctx = getCurrentInstance()
   setCurrentInstance(null) // unset after storing instance
   if (__DEV__ && !ctx) {
     warn(`withAsyncContext() called when there is no active context instance.`)
   }
-  let res: T
-  try {
-    res = await awaitable
-  } finally {
-    setCurrentInstance(ctx)
-  }
-  return res
+  return isPromise<T>(awaitable)
+    ? awaitable.then(
+        res => {
+          setCurrentInstance(ctx)
+          return res
+        },
+        err => {
+          setCurrentInstance(ctx)
+          throw err
+        }
+      )
+    : (awaitable as any)
 }