2017-03-18 1 views
0

Promise<PFObject>을 반환하는 함수가 있습니다. PromiseKit의 when(fulfilled:) 기능에서이 기능을 사용하고 싶습니다.하지만 그렇게하려고 할 때마다 오류가 발생합니다. 당신이 볼 수 있듯이PromiseKit에서 (fulfilled :) 설정하는 방법은 무엇입니까?

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<PFObject>를 반환하는 기능입니다. 다음과 같이 따라서, 내 viewDidLoad()when 문을 설정하려고 그러나

override func viewDidLoad() { 
     super.viewDidLoad() 

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

, 나는 엑스 코드는 "호출 할 수없는 오류 '때'의 인수 목록 유형 '(성취 : Promise<PFObject>)를' ". 나는 내가 올바르게 설정했다고 생각했기 때문에 이것을 고치는 법을 모른다. when에는 약속이 필요하며 무엇을해야할지 모르겠습니다.

+0

이'linkQueryy()'란 : 하나의 약속에 대한

, 더 나은 방법은 다음과 같이 체인을 형성하는 것입니다? – Macabeus

답변

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! 
}