PromiseKit, как дождаться окончательного обещания? - PullRequest
0 голосов
/ 26 апреля 2020

из мира JS У меня возникла небольшая проблема с тем, чтобы обернуть голову вокруг аромата обещаний из набора обещаний, мне нужно немного помочь со следующим:

Предположим, у меня есть функция, которая возвращает обещание, скажем вызов API, в каком-то суперклассе, который я жду для этого обещания, затем выполняю какое-то другое действие (возможно, другой сетевой вызов), для этого родительского вызова у меня также есть блок catch для установки некоторых флагов ошибок, например Итак, в конце у меня есть что-то близкое к этому:

func apiCall() -> Promise<Void> {
  return Promise { seal in
    // some network code at some point:
    seal.fulfill(())
  }
}

// in another class/object

func doApiCall() -> ? { // catch forces to return PMKFinalizer
  return apiCall()
    .done {
      // do something funky here
    }
    .catch {
      print("Could not do first request"
    }
}

Теперь я пытаюсь написать некоторые модульные тесты для этой функциональности, поэтому ответ высмеивается, и я знаю, что он не потерпит неудачу, я просто нужно подождать, чтобы я мог проверить внутреннее состояние моего класса:

// on my test file
doApiCall().done {
  // test my code, but I get an error because I cannot pipe a promise that already has a `.catch`
}

Как можно go решить эту проблему? Я мог бы использовать, наконец, для цепочки PMKFinalizer, но это неправильно

Другой вопрос касательно, возможно ли перехватить ошибку на более высоком уровне, скажем, компонент пользовательского интерфейса, чтобы он мог содержать некоторое временное состояние ошибки ? насколько я вижу, я не видел способа достичь этого.

Большое спасибо 101

...