useConfirm.ts 654 B

123456789101112131415161718192021222324
  1. export function useConfirm() {
  2. const confirm = (options) => {
  3. return new Promise((resolve, reject) => {
  4. const eventId = Date.now() + '_' + Math.random()
  5. const resultEvent = `confirmResult_${eventId}`
  6. const handler = (result) => {
  7. uni.$off(resultEvent, handler)
  8. if (result) resolve(true)
  9. else reject(false)
  10. }
  11. uni.$on(resultEvent, handler)
  12. uni.$emit('showConfirm', { ...options, eventId })
  13. // 超时处理
  14. setTimeout(() => {
  15. uni.$off(resultEvent, handler)
  16. reject(new Error('确认弹窗超时'))
  17. }, 60000)
  18. })
  19. }
  20. return confirm
  21. }