【发布时间】:2020-09-02 05:41:00
【问题描述】:
我被困在某个地方再次在承诺中调用相同的函数,并且由于多次调用它是解除分配承诺。实际上在我的情况下,我有多个页面请求的 API,我想用承诺来调用它。我是按如下方式实现的。
func fetchContacts() -> Promise<FPGetContactResponse?> {
return Promise { seal in
let contactrequest = FPGetContactRequest()
contactrequest.pageNo = getAPICurrentPageNo(Api.API_CONTACTS) + 1
contactrequest.pageSize = SMALL_PAGE_SIZE
contactrequest.doGetContacts(parameter: [:], response: { (response) in
print("Contacts Count : \(response.Contacts?.count ?? 0)")
if(response.Contacts?.count ?? 0 != 0){
_ = self.fetchContacts()
}else{
seal.fulfill(response)
}
})
{ (error) in
print(error.localizedDescription)
seal.reject(error)
}
}
}
在上面的函数中,我检查联系人计数!= 0 然后我需要再次调用相同的函数。但不幸的是,这是解除分配承诺。
我像下面这样调用承诺序列。
func startSyncData(handler:@escaping SyncAPIHandler){
firstly {
self.fetchContacts().ensure {
handler(false,0.5,nil)
}
}.then { data in
self.fetchInteractions().ensure {
handler(false,0.7,nil)
}
}.then { data in
self.fetchAddresses().ensure {
handler(false,0.8,nil)
}
}.then { data in
self.fetchLookupQuery().ensure {
}
}
.done { contacts -> Void in
//Do something with the JSON info
print("Contacts Done")
handler(true,0.8,nil)
}
.catch(policy: .allErrors) { error in
print(error.localizedDescription)
}
}
请为我提供正确的方式在 promise 中再次调用相同的函数。
【问题讨论】:
标签: swift recursion alamofire swift5 promisekit