fix(build): avoid using async/await syntax

This commit is contained in:
Evan You 2021-07-02 08:06:22 -04:00
parent a44d528af1
commit 438754a0d1

View 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)
}