我的背景主要是作为服务器开发人员和经理,但我必须进入并从事前端和 iOS 开发人员的工作。我问这个问题不是争论,但我真的不明白 Javascript 在网络请求方面的单线程性质是什么意思。
我了解事件如何在用户空间级别在 Javascript 和 iOS 中注册。我的问题是,如果网络请求未放在后台线程上,iOS 中的 UI 将阻塞。但是,在浏览器/javascript 运行时中,它不会。Javascript(至少是当前的实现/pre-web-workers)总是被描述为单线程的。我理解(我认为 - 但这可能是问题)setInterval 用于检查完成的方式,但是单线程 Javascript 运行时如何具有不阻塞 UI 的异步函数(尤其是考虑到 iOS 没有它)?例如,在这个答案中,似乎需要创建 5 个线程:Parallel asynchronous Ajax requests using jQuery
事实上,一次可以有 6 个出站网络请求。当 javascript 运行时被描述为单线程时,这是否意味着与 iOS 的多线程概念(或者更准确地说是 POSIX 的带有 pthread_create 处理套接字描述符的 while 循环的概念)根本不同。
我可能只是没有得到任何东西,但我认为提供的大多数示例都没有说明这是如何在单线程环境中实际完成的(除非在操作系统级别而不是 Javascript 运行时级别考虑网络请求)
thx 对此有任何帮助