我设置了一个函数来返回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
}
}
但是,我得到的错误是,当参数列表类型为'(履行:Promise<PFObject>
)'时,xcode无法“调用”。我不知道如何解决这个问题,因为我认为我已经正确设置了它。 when
需要一个承诺,我给它一个,所以我不知道该怎么做。
答案 0 :(得分:2)
尝试如下:
when(fulfilled: [linkQueryy()] as! [Promise<Any>]).then { _ in
// do more asynch stuff
}
参数fulfilled:
必须是可迭代的。
顺便说一句,when(fulfilled:)
只有在你有许多承诺并且需要等待所有人成功完成时才是必要的。但是在你的代码中,你需要等待一个承诺。
对于单一承诺,更好的方法是形成如下链:
firstly {
linkQueryy()
}.then { _ -> Void in
// do more asynch stuff
}.catch { _ in
// error!
}