从计时器内调用异步函数



我有一个异步函数,它必须在计时器内每给定时间调用一次。为了避免Xcode错误,

func firetimer()  {

let newtimer = Timer(timeInterval: 1.0, repeats: true) { newtimer in
self.myAsyncFunction() // 'async' call in a function that does not support concurrency
}
RunLoop.current.add(newtimer, forMode: .common)
}

我试着把它放进一项任务中,但这给了我一个";线程1:EXC_BAD_ACCESS(代码=1,地址=0x0(";运行时出错。

func firetimer()  {

let newtimer = Timer(timeInterval: 1.0, repeats: true) { newtimer in
Task{
await self.myAsyncFunction() // not working
}
}
RunLoop.current.add(newtimer, forMode: .common)
}

事实上,我不需要任何等待,函数的下一次出现可以在后者仍在工作时调用。有什么建议吗?谢谢

尝试创建一个支持函数:

  1. 支持函数是同步的,但异步调用myAsyncFunction
func mySyncFunction() {
// Call the asynchronous function
Task {
await self.myAsyncFunction()
}
}
  1. fireTimer调用支持函数
func fireTimer()  {

let newTimer = Timer(timeInterval: 1.0, repeats: true) { newTimer in
self.mySyncFunction()    // Synchronous
}
RunLoop.current.add(newTimer, forMode: .common)
}
}

相关内容

  • 没有找到相关文章

最新更新