PromiseKit `Result .. is used warning` 在带有 for 循环的链式序列中
Posted
技术标签:
【中文标题】PromiseKit `Result .. is used warning` 在带有 for 循环的链式序列中【英文标题】:PromiseKit `Result.. is unused warning` in a chained sequence with a for loop 【发布时间】:2019-04-29 10:17:27 【问题描述】:我收到了这个烦人的警告,但我无法摆脱它。
假设我有一个向蓝牙文件设备发送命令的承诺,要执行一个过程,我需要同步发送这些命令。
所以你可以在 PromiseKit 6 中做的是创建一个 for 循环并使用 then 将每个命令附加到前一个 Promise 中。这种方法的问题是编译器会触发关于Result of call to 'then(on:flags:_:)' is unused
的警告,就像缺少catch
。我知道我可以使用 cauterize()
,但在这种情况下,我想我会丢失执行每个承诺时抛出的错误。 when
不可行,因为它会在我需要同步时同时执行。
这是一个与字符串一起使用的小示例,在我的实际应用程序中它们不是字符串。
static func promise_startProcedure(with commands: [String]) -> Promise<Void>
let promise = Promise()
for command in commands
promise.then //<-- WARNING SHOW HERE
Promise.value(command)
return promise
有没有办法摆脱这个警告? [更新] 我做错了,答案不正确,但我指出了正确的方向。
static func promise_startProcedure(with commands: [String]) -> Promise<Void>
var promise = Promise()
for command in commands
promise = promise.then
Promise.value(command)
return promise
【问题讨论】:
我看不出这些承诺有什么用处。 @Kamran 当然,正如我所说,这只是一个小例子,这个过程与其他承诺链接在一起,最后有一个catch
【参考方案1】:
试试这个。我刚刚添加了Underscore
来抑制警告,但没有收到该警告。
static func promise_startProcedure(with commands: [String]) -> Promise<Void>
let promise = Promise()
for command in commands
_ = promise.then
Promise.value(command)
return promise
【讨论】:
【参考方案2】:您可以在方法的声明中添加@discardableResult
。 From the docs:
例如,函数声明中的 discardableResult 属性 表示,虽然函数返回一个值,但编译器 如果返回值未使用,则不应生成警告。
【讨论】:
它不起作用,警告在这里显示promise.then
但感谢您指出,我将编辑问题以上是关于PromiseKit `Result .. is used warning` 在带有 for 循环的链式序列中的主要内容,如果未能解决你的问题,请参考以下文章
从 PromiseKit 中的完成处理程序返回 Promise
Elasticsearch 的分页报错 result window is too large