gpt4 book ai didi

http - 为什么我的 HTTP 请求(气泡包装)无法在 Grand Central Dispatch 队列中执行?

转载 作者:可可西里 更新时间:2023-11-01 16:56:49 25 4
gpt4 key购买 nike

我在我的 RubyMotion 应用程序中这样做:

Dispatch::Queue.concurrent('google').async {
BubbleWrap::HTTP.get("http://google.com") do |response|
p response.body.to_str
end
}

这个调用没有完成。

但是,如果我将 BubbleWrap 代码放在 Dispatch 队列之外,它可以正常完成。

最佳答案

BubbleWrap::HTTP 是对 NSURLConnection 的抽象,它依赖于 RunLoop。用于其异步处理。不幸的是,RunLoops 没有在 GCD 队列上设置,我还没有想出如何在 GCD 队列上启动一个 runloop。当我需要上述内容时,我求助于实例化一个新的 NSThread,并改为手动启动运行循环:

action = lambda do
runLoop = NSRunLoop.currentRunLoop

BW::HTTP.get("http://www.google.com") do |response|
NSLog("Fetched Google!")
end

runLoop.run
end

thread = NSThread.alloc.initWithTarget action, selector:"call", object:nil
thread.start

这个答案是对 my blogpost on the same topic 的翻版和 Cocoa In The Shell

关于http - 为什么我的 HTTP 请求(气泡包装)无法在 Grand Central Dispatch 队列中执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13202185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com