问题标签 [structured-concurrency]

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 回答
211 浏览

swift - 为什么改变演员的 nonSendable 属性是合法的?

以下代码在 Swift 5.5 (beta) 中是合法的:

为什么这是合法的?狗属性是共享状态,不是吗?我们不是有同时在不同线程上访问演员的狗的危险吗?这不就是演员应该保护我们的吗?

奇怪的是,如果演员的dog属性是用var而不是声明的let,我们将不得不await在访问期间说。为什么会有所不同?Dog 是一个引用类型;它在适当的位置是可变的,并且无论是否用letor声明它都以完全相同的方式可变var

0 投票
1 回答
1764 浏览

ios - Swift - 不等待异步返回

我希望能够让函数doSomething()从不class B存在async并且不阻止它的调用者线程。但是使用以下代码,我得到了这个错误:

无法将“() async -> Void”类型的函数传递给期望同步函数类型的参数

并且 xcode 尝试强制执行doSomething()函数 fromclass B成为async

0 投票
1 回答
124 浏览

android - 使用 GlobalScope.launch 和 CoroutineScope().launch 启动协程有区别吗?

在 Kotlin 中有多种启动协程的方法。我发现了几个使用GlobalScopeCoroutineScope使用的例子。但是后者是在启动协程时直接创建的:

  1. 使用GlobalScope

  2. 使用CoroutineScope实例,在启动协程时直接创建:

在这种情况下,这两种方法有区别吗?

第二种情况是不是违反了结构化并发的原则

0 投票
1 回答
109 浏览

swift - 将本地可变结构传递给异步 let 绑定

我想创建一个 URL 请求并将其传递给 async let 绑定,这对我来说似乎很自然:

为什么我会收到错误消息?URLRequest是一个结构,所以当我们将它传递给一个函数时,该函数应该得到该结构的副本,所以如果我request在异步调用之后修改,它不应该影响调用。

我知道调用是异步发生的,但我希望它在调用点捕获参数,然后继续执行,就好像调用已经进行一样(因此,request调用点的副本已传递到data(for: request).

此外,是否有一种方便的方法可以在不创建另一个let变量且不使用闭包进行初始化的情况下执行此操作request,例如: