gpt4 book ai didi

ios - PromiseKit 后退一步

转载 作者:行者123 更新时间:2023-11-28 06:08:59 31 4
gpt4 key购买 nike

我的应用程序中有一系列 UIViewController(弹出窗口),用于从最终用户那里收集信息。我设法用这样的 promise 将它们链接起来:

firstly {
return showFirstPopup()
}
.then { info1 -> Promise<Info2> in
dismissFirstPopup()
//Do sth with info1...
return showSecondPopup()
}
.then { info2 -> Promise<Info3> in
dismissSecondPopup()
//Do sth with info2...
return showThirdPopup()
}
.then { info3 -> Promise<Info4> in
dismissThirdPopup()
//Do sth with info3...
return showForthPopup()
}
...
.catch { error in
//Handle any error or cancellation...
}

例如,如果用户在第三个弹出窗口中按下返回键,我需要返回到之前的“then”,而不是取消整个流程。

基本上我需要能够返回一步,让用户编辑数据,然后继续流程。

有没有办法用 PromiseKit 做到这一点?

最佳答案

这就是我最终使用的。希望这也能帮助其他人。

func myFunc(info: Info) -> Promise<()>
{
return Promise { fulfill, reject in

let firstPromise = shouldShowFirstPopup ? showFirstPopup() : Promise(value: info.info1)

firstPromise
.then { info1 -> Promise<Info2> in
info.info1 = info1

if (info.shouldShowSecondPopup) {
return showSecondPopup()
}

return Promise(value: info.info2)
}
.then { info2 -> Promise<Info3> in
info.info2 = info2
info.shouldShowSecondPopup = false

if (info.shouldShowThirdPopup) {
return showThirdPopup()
}

return Promise(value: info.info3)
}
.then { info3 -> Promise<()> in
info.info3 = info3
info.shouldShowThirdPopup = false

return processEverything()
}
.then { _ -> () in
fulfill(())
}
.catch { error in
switch error {
case MyErrors.backPressed(let popupType):
switch popupType {
case .firstPopup:
reject(MyErrors.userCanceled)
return

case .secondPopup:
info.shouldShowFirstPopup = true
info.shouldShowSecondPopup = true

case .thirdPopup:
info.shouldShowSecondPopup = true
info.shouldShowThirdPopup = true

default:
reject(MyErrors.defaultError(message: "Not implemented case exception"))
return
}

firstly {
return myFunc(info: info)
}
.then { _ -> () in
fulfill(())
}
.catch { error2 in
reject(error2)
}

default:
reject(error)
}
}
}
}

关于ios - PromiseKit 后退一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47269353/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com