0

我在使用AFNetworking使服務呼叫的應用以下情形:AFHTTPRequestOperation依賴

  1. 我稱之爲一種特殊的服務,將產生對我來說令牌
  2. 我打電話,我想要的服務,發送此令牌作爲參數
  3. 我調用另一個特殊服務來銷燬令牌。

我必須按照我每次向服務器請求時這3個步驟。我無法改變服務器的工作方式,所以我必須遵守這個要求。我也不能對多個請求使用相同的標記。

我的問題是下面的 - 我試圖做到這一點使用AFHTTPRequestOperation S:

NSError *serializationError = nil; 
NSMutableURLRequest *request = [self.manager.requestSerializer requestWithMethod:@"POST" URLString:[[NSURL URLWithString:@"serviceName.json" relativeToURL:self.manager.baseURL] absoluteString] parameters:@{ @"token": token } error:&serializationError]; 
AFHTTPRequestOperation *myRequestOperation = [self.manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) { 
    // Success login 
} failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) { 
    // Failure logic 
}]; 

[myRequestOperation addDependency:createTokenRequestOperation]; 

其中self.managerAFHTTPRequestOperationManager一個實例,但有一個問題 - 我沒有價值token

由於myRequestOperation應該只在上面的列表中的第1點後執行,所以我使它依賴於將使我獲得令牌的操作。

現在我的困惑 - 我如何創建一個操作,使用前一個操作中的參數,當我需要將它們兩個實例化以使其中一個依賴另一個時?

+0

我quess您可以創建一個*變量*在某個對象或當前的操作調用者中出現。當第一個操作完成時,它將令牌設置爲這個*變量*。當下一個操作被調用時,它會檢查這個*變量*中是否有一個值。 – Massmaker

回答

0

由於我沒有能夠找到一個解決方案,爲我工作,我結束了使用PromiseKit,這讓我鏈條異步調用是這樣的:

[NSURLConnection promise:rq1].then(^(id data1){ 
    return [NSURLConnection promise:rq2]; 
}).then(^(id data2){ 
    return [NSURLConnection promise:rq3]; 
}).then(^(id data3){ 
    // Work with the data returned from rq3 
});