swift3 - How to manually trigger Promise in Swift 3 with PromiseKit -


i'm looking develop sync service trigger when user pulls refresh. sync service perform multiple requests server. how can manually trigger promisekit promise after every api call has been completed? promise's callbacks being called immediately.

//myviewcontroller.swift func refresh(sender: anyobject){     var promise = syncservice.syncfromserver()     promise.then{ response         //this called immediately, , need wait until sync complete         refreshcontrol?.endrefreshing()         tableview.reloaddata()     } }  //syncservice.swift func syncfromserver() -> promise<asyncresult>{     let promise = promise(value: asyncresult)      var page = 1      //multiple api calls     //let request1 = ...     //let request2 = ...     //let request3 = ...     //how tell returned promise trigger associated callbacks after last api requests has been completed?      //another scenario need handle when amount of requests not known ahead of time.     while(true){         var response = makeanapicall(page)          //if response body says no more data available, break out of while loop, , tell promise callbacks execute.         //if(nomoredata){         // how perform         // promise.complete //this line needs tell `then` statement in `myviewcontroller` execute.         // break         //}else{         //  response data         //}         page = page + 1     }      return promise } 

below have provided example of should end refreshing , update tableview after syncservice calls have run. @ promisekit docs using 'when'.

func refresh(sender: anyobject){     syncservice.syncfromserver().then { response in         refreshcontrol?.endrefreshing()         tableview.reloaddata()     } }  //syncservice.swift func syncfromserver() -> promise<void> {     let request1 = methodreturningpromise1()     let request2 = methodreturningpromise2()     return when(fulfilled: [request1, request2]) }  private func methodreturningpromise1() -> promise<void> {     return syncservice.somedatacall().then { response -> void in         //do here     } } 

Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -