问题标签 [dispatch-queue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
310 浏览

ios - IOS Swift 如何从异步方法中获取价值

我是 Swift 新手,想知道如何从异步任务中获取值。我有一个函数可以在返回时从 API 获取 Json 数据我想获取异步任务之外的特定字段的值...我的代码基本上在下面我有一个名为status的变量我想获取的值返回异步调用后的状态然后我想检查该值是否为 1 。在下面的代码中,返回的值是 1 但是似乎调用的异步是在if Status == 1 {}行之前执行的。如果值为 One 那么我想导航到不同的 ViewController 。任何建议都会很棒...我显然不能将代码放到异步代码中的不同 ViewController 中,因为它被调用了很多次。

0 投票
2 回答
1357 浏览

iphone - 使用 RxSwift 在 DispatchGroup 之后返回对象

我正在使用 DispatchGroup 从 3 个不同的 API 下载数据,一旦完成,我想从我的函数中返回新创建的合并对象。现在虽然 DispatchGroup 工作正常并且我正在获取数据,但我无法将其返回给调用函数。以下是我的功能:

调用函数:

我无法在上面的订阅方法中获取我的对象,它永远不会运行。

0 投票
1 回答
1721 浏览

swift - 带有完成块的 Swift 异步

我有两个执行异步的函数。

我试图“同步”它们: DispatchGroup 和 DispatchQueue

Func1 和 Func2 只是调用:

但问题是我不知道如何等待 queue.async 中的完成块 ..

有人有任何想法吗?

0 投票
1 回答
34 浏览

ios - 为什么线程会被非主队列用完?

http://devstreaming.apple.com/videos/wwdc/2015/718b7aw9tq/718/718_hd_building_responsive_and_efficient_apps_with_gcd.mp4

在此处输入图像描述

35:43。

因为线程池中的所有线程都被并发队列用完了。发生死锁是因为主队列没有更多可用线程来运行任务。

我记得主队列有一个专用的主线程(或线程池???),以确保主队列顺利运行没有问题。

我解释错了哪一部分?

0 投票
2 回答
1405 浏览

swift - DispatchQueue.main.async 中的延迟

我有一个如下流程的设计。我需要在第 5 步和第 6 步之间设置延迟 0.3 秒。我尝试了以下选项,但没有得到任何结果。

我的问题是,我怎样才能做到这一点?

注意:看动画需要 13 秒。

流动

  1. Task Handler // 用于 webService 请求
  2. Closure Handler // 用于触发 ViewController
  3. DispatchQueue.main.async // 用于更新 UI
  4. 第一部动画
  5. 第二部动画
  6. 导航到下一个屏幕

测试 1

测试 2

测试 3

执行(_:with:afterDelay:)

0 投票
2 回答
2315 浏览

swift - SWIFT - OperationQueue.main.addOperation 和 DispatchQueue.main.async 有什么区别?

有时我必须在主线程上做一些事情,并建议将代码放在OperationQueue.main.addOperation.

其他时候,建议在里面写代码DispatchQueue.main.async

这两者有什么区别?

(有一个类似的问题标题,但内容不匹配。)

0 投票
1 回答
1547 浏览

ios - 串行调度队列将只使用一个线程?

我发现串行队列将使用多个线程来运行异步代码。这是操场上的测试代码。

当我反复执行操场时,有时会出现这样的输出。据我了解,串行队列应该只使用一个线程,但日志显示它使用了 2 个线程。我真的很困惑。什么是正确的行为?

0 投票
1 回答
1045 浏览

swift4 - iOS DispatchQueue.main.sync 不工作 Swift 4 Xcode 9

我正在尝试让 TouchID 对我的应用程序上的操作进行身份验证。如果成功,我需要它来显示 ImageView。

这是我在 ViewController 中的代码

我能够使用 TouchID 成功进行身份验证。它打印“关闭中”。但是 DispatchQueue.main.async 中的块没有执行,我无法更新 notificationImage:UIImageView。它也不会在 sync{} 块中打印任何内容。

我试图禁用主线程检查器并删除 DispatchQueue.main.async 部分,但视图有时会刷新,有时不会。我想使用推荐的做法并从主线程更新 UI。

我在 Xcode 9 Swift 4 iOS 11.4

这里可能有什么问题。

0 投票
1 回答
654 浏览

ios - DispatchQueue.main.async 不会崩溃,但 DispatchQueue.main.sync 会崩溃?

当我在主线程上并尝试 DispatchQueue.main.async 时,它不会使应用程序崩溃,但 DispatchQueue.main.sync 会。为什么这样?

0 投票
2 回答
139 浏览

ios - 仅当特定 ViewController 在前台时 iOS Swift 调用函数

在我的应用程序中,我有两个视图控制器viewcontroller1viewcontroller2. 在view controller1我有一个名为的函数时,UpdateView()我需要为每个函数调用这个函数,60 seconds并且我使用DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 60). 我的问题是我只想viewcontroller1在前台运行这个函数,当用户移动到viewcontroller2我不想再运行这个函数时。如何解决这个问题?