Функция continueOnErrorWith(continuation:)
запускается только при наличии ошибки - задание не выполнено.
В вашей функции testTask()
, taskHello1
выполняется или выполняется успешно, и поэтому 'hello1' выводится на консоль.
В коде:
let taskHello2 = taskHello1.continueOnSuccessWith(continuation: { (task) -> Task<String> in
let taskResult = self.echo("error")
return taskResult
})
, поскольку taskHello1
уже встретил успех , код внутри замыкания выполняется и 'error' печатается.
Внутренний код:
_ = taskHello2.continueOnErrorWith(continuation: { (task) -> Task<String> in
let taskResult = self.echo("Error received")
return taskResult
})
, поскольку taskHello2
имел не встретил ошибку , код внутри замыкания не выполняется и «Ошибка получена» не выводится на консоль.
Аналогично в коде:
_ = taskHello2.continueOnSuccessWith(continuation: { (task) -> Task<String> in
let taskResult = self.echo("Success received")
return taskResult
})
, поскольку taskHello2
имел встретил успех , код внутри замыкания выполняется и 'Успех получен' .