PromiseKit `Result .. неиспользуемое предупреждение` в цепочечной последовательности с циклом for - PullRequest
1 голос
/ 29 апреля 2019

У меня есть это раздражающее предупреждение, и я не могу от него избавиться.
Допустим, у меня есть обещание, которое отправляет команду на устройство Bluetooth, для выполнения процедуры мне нужно отправить эти командысинхронно.
Итак, что вы можете сделать в PromiseKit 6 - создать цикл for и добавить каждую команду, используя затем, к предыдущему обещанию.Проблема с этим подходом заключается в том, что компилятор выдает предупреждение о 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
    }

IsЕсть ли способ избавиться от этого предупреждения?
[ОБНОВЛЕНИЕ]
Я сделал ошибку, ответ был неправильным, но указал мне правильное направление.

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 ]

1 голос
/ 29 апреля 2019

Попробуй это. Я просто добавил Underscore для подавления предупреждения и не получил это предупреждение.

static func promise_startProcedure(with commands: [String]) -> Promise<Void> {
    let promise = Promise()
    for command in commands {
        _ = promise.then {
            Promise.value(command)
        }
    }
    return promise
}
1 голос
/ 29 апреля 2019

Вы можете добавить @discardableResult к объявлению метода. Из документов :

Например, атрибут discardableResult в объявлении функции указывает, что, хотя функция возвращает значение, компилятор не должен генерировать предупреждение, если возвращаемое значение не используется.

...