gpt4 book ai didi

swift - 如何设置when(fulfilled :) in PromiseKit?

转载 作者:可可西里 更新时间:2023-11-01 01:23:04 26 4
gpt4 key购买 nike

我设置了一个返回 Promise<PFObject> 的函数.我想在 PromiseKit 的 when(fulfilled:) 中使用这个函数功能,但每当我尝试这样做时,我都会收到错误消息。这是返回 Promise<PFObject> 的函数:

func Query() -> Promise<PFObject>{
return Promise{ fulfill, reject in
let linkQueryy = PFUser.query()
linkQueryy?.findObjectsInBackground(block: { (objectss, error) in
if let objects = objectss{
for object in objects{
fulfill(object)
}
}
})
}
}

如您所见,函数在完成后返回 Promise。因此,我尝试设置一个 when我的声明 viewDidLoad()如下:

override func viewDidLoad() {
super.viewDidLoad()

when(fulfilled: Query()).then{
//do more asynch stuff
}
}

但是,我得到的错误是 xcode 无法“使用参数列表类型‘(fulfilled: Promise<PFObject> )’调用‘when’”。我不知道如何解决这个问题,因为我认为我已经正确设置了它。 when需要一个 promise ,而我正在给它一个 promise ,所以我不确定该怎么做。

最佳答案

尝试如下:

when(fulfilled: [linkQueryy()] as! [Promise<Any>]).then { _ in
// do more asynch stuff
}

参数 fulfilled: 需要是一个可迭代的。

顺便说一句,when(fulfilled:) 仅在您有很多 promise 并且需要等待所有 promise 成功完成时才需要。但在您的代码中,您只需等待一个 promise 。

对于单个 promise,更好的方法是形成一个链,如下所示:

firstly {
linkQueryy()
}.then { _ -> Void in
// do more asynch stuff
}.catch { _ in
// error!
}

关于swift - 如何设置when(fulfilled :) in PromiseKit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42880676/

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