mock golang defer

Remarks

defer can register a series of functions. These functions will be automatically executed in the order of first-in, last-out when defer is destroyed. Usually, you can use defer in a function scope to automatically release resources. For example, after a function opens the database, you can 'close the database' register in defer, which ensures that the database will definitely be released when the function ends

Example

 Defer.async(async (d) => {
const db = await openDB() // open resource
// close db
d.defer(async () => await db.close())
const f = await openFile('date.log') // open resource
// close file
d.defer(async () => await f.close())

// some logic code logic
const text = await f.readAll()
const result = await db.set('log', text)

return result // After the function returns, defer will call the registered cleanup function according to the first in, last out
})

Hierarchy

  • Defer

Constructors

Properties

Methods

Constructors

Properties

fs_: Func[] = ...

defer funcs

Methods

  • Returns Promise<void>

  • Parameters

    • f: (() => any)
        • (): any
        • Returns any

    Returns Cancel

  • Type Parameters

    • T1

    Parameters

    • f: ((v1: T1) => any)
        • (v1: T1): any
        • Parameters

          • v1: T1

          Returns any

    • v1: T1

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    Parameters

    • f: ((v1: T1, v2: T2) => any)
        • (v1: T1, v2: T2): any
        • Parameters

          • v1: T1
          • v2: T2

          Returns any

    • v1: T1
    • v2: T2

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3) => any)
        • (v1: T1, v2: T2, v3: T3): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    • T8

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7
          • v8: T8

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7
    • v8: T8

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    • T8

    • T9

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7
          • v8: T8
          • v9: T9

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7
    • v8: T8
    • v9: T9

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    • T8

    • T9

    • T10

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7
          • v8: T8
          • v9: T9
          • v10: T10

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7
    • v8: T8
    • v9: T9
    • v10: T10

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    • T8

    • T9

    • T10

    • T11

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7
          • v8: T8
          • v9: T9
          • v10: T10
          • v11: T11

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7
    • v8: T8
    • v9: T9
    • v10: T10
    • v11: T11

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    • T8

    • T9

    • T10

    • T11

    • T12

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7
          • v8: T8
          • v9: T9
          • v10: T10
          • v11: T11
          • v12: T12

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7
    • v8: T8
    • v9: T9
    • v10: T10
    • v11: T11
    • v12: T12

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    • T8

    • T9

    • T10

    • T11

    • T12

    • T13

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7
          • v8: T8
          • v9: T9
          • v10: T10
          • v11: T11
          • v12: T12
          • v13: T13

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7
    • v8: T8
    • v9: T9
    • v10: T10
    • v11: T11
    • v12: T12
    • v13: T13

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    • T8

    • T9

    • T10

    • T11

    • T12

    • T13

    • T14

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7
          • v8: T8
          • v9: T9
          • v10: T10
          • v11: T11
          • v12: T12
          • v13: T13
          • v14: T14

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7
    • v8: T8
    • v9: T9
    • v10: T10
    • v11: T11
    • v12: T12
    • v13: T13
    • v14: T14

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    • T8

    • T9

    • T10

    • T11

    • T12

    • T13

    • T14

    • T15

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14, v15: T15) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14, v15: T15): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7
          • v8: T8
          • v9: T9
          • v10: T10
          • v11: T11
          • v12: T12
          • v13: T13
          • v14: T14
          • v15: T15

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7
    • v8: T8
    • v9: T9
    • v10: T10
    • v11: T11
    • v12: T12
    • v13: T13
    • v14: T14
    • v15: T15

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    • T8

    • T9

    • T10

    • T11

    • T12

    • T13

    • T14

    • T15

    • T16

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14, v15: T15, v16: T16) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14, v15: T15, v16: T16): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7
          • v8: T8
          • v9: T9
          • v10: T10
          • v11: T11
          • v12: T12
          • v13: T13
          • v14: T14
          • v15: T15
          • v16: T16

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7
    • v8: T8
    • v9: T9
    • v10: T10
    • v11: T11
    • v12: T12
    • v13: T13
    • v14: T14
    • v15: T15
    • v16: T16

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    • T8

    • T9

    • T10

    • T11

    • T12

    • T13

    • T14

    • T15

    • T16

    • T17

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14, v15: T15, v16: T16, v17: T17) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14, v15: T15, v16: T16, v17: T17): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7
          • v8: T8
          • v9: T9
          • v10: T10
          • v11: T11
          • v12: T12
          • v13: T13
          • v14: T14
          • v15: T15
          • v16: T16
          • v17: T17

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7
    • v8: T8
    • v9: T9
    • v10: T10
    • v11: T11
    • v12: T12
    • v13: T13
    • v14: T14
    • v15: T15
    • v16: T16
    • v17: T17

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    • T8

    • T9

    • T10

    • T11

    • T12

    • T13

    • T14

    • T15

    • T16

    • T17

    • T18

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14, v15: T15, v16: T16, v17: T17, v18: T18) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14, v15: T15, v16: T16, v17: T17, v18: T18): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7
          • v8: T8
          • v9: T9
          • v10: T10
          • v11: T11
          • v12: T12
          • v13: T13
          • v14: T14
          • v15: T15
          • v16: T16
          • v17: T17
          • v18: T18

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7
    • v8: T8
    • v9: T9
    • v10: T10
    • v11: T11
    • v12: T12
    • v13: T13
    • v14: T14
    • v15: T15
    • v16: T16
    • v17: T17
    • v18: T18

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    • T8

    • T9

    • T10

    • T11

    • T12

    • T13

    • T14

    • T15

    • T16

    • T17

    • T18

    • T19

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14, v15: T15, v16: T16, v17: T17, v18: T18, v19: T19) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14, v15: T15, v16: T16, v17: T17, v18: T18, v19: T19): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7
          • v8: T8
          • v9: T9
          • v10: T10
          • v11: T11
          • v12: T12
          • v13: T13
          • v14: T14
          • v15: T15
          • v16: T16
          • v17: T17
          • v18: T18
          • v19: T19

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7
    • v8: T8
    • v9: T9
    • v10: T10
    • v11: T11
    • v12: T12
    • v13: T13
    • v14: T14
    • v15: T15
    • v16: T16
    • v17: T17
    • v18: T18
    • v19: T19

    Returns Cancel

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • T6

    • T7

    • T8

    • T9

    • T10

    • T11

    • T12

    • T13

    • T14

    • T15

    • T16

    • T17

    • T18

    • T19

    • T20

    Parameters

    • f: ((v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14, v15: T15, v16: T16, v17: T17, v18: T18, v19: T19, v20: T20) => any)
        • (v1: T1, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9, v10: T10, v11: T11, v12: T12, v13: T13, v14: T14, v15: T15, v16: T16, v17: T17, v18: T18, v19: T19, v20: T20): any
        • Parameters

          • v1: T1
          • v2: T2
          • v3: T3
          • v4: T4
          • v5: T5
          • v6: T6
          • v7: T7
          • v8: T8
          • v9: T9
          • v10: T10
          • v11: T11
          • v12: T12
          • v13: T13
          • v14: T14
          • v15: T15
          • v16: T16
          • v17: T17
          • v18: T18
          • v19: T19
          • v20: T20

          Returns any

    • v1: T1
    • v2: T2
    • v3: T3
    • v4: T4
    • v5: T5
    • v6: T6
    • v7: T7
    • v8: T8
    • v9: T9
    • v10: T10
    • v11: T11
    • v12: T12
    • v13: T13
    • v14: T14
    • v15: T15
    • v16: T16
    • v17: T17
    • v18: T18
    • v19: T19
    • v20: T20

    Returns Cancel

  • Execute an asynchronous process, defer will wait for each Promise to complete before executing the next function

    Type Parameters

    • T

    Parameters

    • f: ((defer: Defer) => T | Promise<T>)
        • (defer: Defer): T | Promise<T>
        • Parameters

          Returns T | Promise<T>

    Returns Promise<T>

  • Execute synchronous process, defer will not wait for any Promise

    Type Parameters

    • T

    Parameters

    • f: ((defer: Defer) => T)
        • (defer: Defer): T
        • Parameters

          Returns T

    Returns T

Generated using TypeDoc