Skip to content

CanceledResult

import type { CanceledResult } from '@kairo-js/router'

调用被取消时 router.request() 的返回值。Promise 会 resolve 为此值,而非 reject。

typescript
interface CanceledResult {
  readonly canceled: true
  readonly reason:
    | 'ADDON_NOT_FOUND'
    | 'ADDON_INACTIVE'
    | 'ADDON_UNRESOLVED'
    | 'CANCELED_BY_HOOK'
}

字段

cancelled

readonly canceled: true

始终为 true。可用作类型守卫。


reason

readonly reason: string

调用被取消的原因。


reason 值

reason说明
ADDON_NOT_FOUND目标 addonId 不存在于路由表中。
ADDON_INACTIVE目标插件处于非活跃状态。
ADDON_UNRESOLVED目标插件处于未解析状态(依赖项尚未解析)。
CANCELED_BY_HOOKbefore 钩子调用了 ctx.cancel() 取消了本次调用。

用法

typescript
const result = await router.request<{ balance: number }>(
  'economy-addon',
  'economy/getBalance',
  { playerId: 'abc123' },
)

if ('canceled' in result) {
  switch (result.reason) {
    case 'ADDON_NOT_FOUND':
      console.warn('economy-addon not found')
      break
    case 'ADDON_INACTIVE':
      console.warn('economy-addon is currently inactive')
      break
    case 'CANCELED_BY_HOOK':
      console.warn('Call was cancelled by a hook')
      break
    default:
      console.warn('Call cancelled:', result.reason)
  }
} else {
  console.log('Balance:', result.balance)
}

Released under the MIT License.