等待异步函数并根据结果返回值

时间:2019-08-25 19:38:39

标签: ios swift

我有3个功能:

  • foo()播放给定时间的声音(使用DispatchQueue.main.asyncAfter停止播放声音)
  • VC中的
  • bar(),它读取用户对该声音的响应(用户在播放声音时需要按住一个按钮)并将其发送到baz()
  • baz(),应根据用户对声音的响应(更具体地说是播放声音/单击按钮的开始/结束时间)返回一个值。

我不知道如何等待baz()中的功能bar()返回值。不冻结应用程序是否有可能?我不想暂停整个应用程序,因为它需要在那段时间内跟踪用户活动。

我尝试在具有指定计时器的baz()中使用DispatchGroup(因为我知道播放声音的持续时间),并且使用enter(),leave(),notify()方法等待完成,但是问题是我需要在此处返回一个值(因为在开始下一次声音测试之前需要它-以便知道用户是否对上一个正确响应),而我无法通过notify()函数来实现。你有什么建议吗?

0 个答案:

没有答案