PromiseKit`Result ..是未使用的警告`,带有for循环

时间:2019-04-29 10:17:27

标签: ios swift promisekit

我有这个烦人的警告,但我无法摆脱它。
假设我有一个向蓝牙设备发送命令的承诺,要做一个过程,我需要同步发送这些命令。
因此,在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
        }

2 个答案:

答案 0 :(得分:1)

您可以将@discardableResult添加到方法的声明中。 From the docs

  

例如,函数声明上的disableableResult属性   指示尽管函数返回值,但编译器   如果未使用返回值,则不应生成警告。

答案 1 :(得分:1)

尝试一下。我只是添加了import tkinter as tk from PIL import Image, ImageTk import tkinter.font as tkfont best_batsmen = "James Bond" message = "The best Batsman of the Tournament could possibly be: " canvas_width = 500 canvas_height = 500 root = tk.Tk() canvas = tk.Canvas(root, width=canvas_width, height=canvas_height) canvas.pack() frame = tk.Frame(root) canvas.create_window(1, 0, window=frame, anchor='nw') tk.Label(frame, text=message).pack(side='left') tk.Label(frame, text=best_batsmen, font='bold').pack(side='left') img = ImageTk.PhotoImage(Image.open("virat.jpeg")) canvas.create_image(0, 20, anchor='nw', image=img) #canvas.image = img root.mainloop() 来禁止显示警告,但没有得到该警告。

Frame