

# 実現したいこと

APIからのレスポンスとしてnumberが返ってきますがその値が0になるまで  
Alamofireで同じAPIに対してリクエストを投げ続けたいのですが、  
どのようにコーディングすれば良いのか思いつきません。

通信結果を投げた順番で結果を受け取るようにしたい場合、  
どのように記述することで処理を実装できますか？

while文で囲った場合はレスポンスの速さ次第によっては、  
受け取る順番がバラバラ担ってしまうと思うのですが、どうでしょうか。

* * *

# 対象のコード

[code]

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
    
        /*ここの処理をループさせたいのです。*/
        getMessageList(apiResponse: { response in
            ※省略
        })
        /*--------------------------------*/
    }
    
    func getMessageList(apiResponse: (responseData: Int) -> ()) {
    
        Alamofire.request(.GET, "(APIのURL)", headers: customHeader)
            .responseJSON { response in
                guard let object = response.result.value else {
                    return
                }
                let json = JSON(object)
                let number: Int = json["result"]["number"].int!
                apiResponse(responseData: number)
        }
    
    }
    
[/code]

* * *

[teratail](https://teratail.com/questions/46880)にも投稿させていただいています。  
至急と言うほどでは無いですが、早めに解答をいただけるとありがたいです。

よろしくお願いします。


CC BY-SA 3.0
2016-09-07T10:03:55.970
28743
2017-07-16T00:31:19.097
2020-06-17T08:14:45.997
-1
16765
question
swift swift2
APIからの値が0になるまでループさせたい


teratailにて回答頂きました。

[code]

    private var _response_numbers: Array<Int> = []
        override func viewWillAppear(animated: Bool) {
            super.viewWillAppear(animated)
    
            /*ここの処理をループさせたいのです。*/
            getMessageList()
            /*--------------------------------*/
    
    }
    
    func getMessageList() {
    
        Alamofire.request(.GET, "(APIのURL)", headers: customHeader)
            .responseJSON { response in
                guard let object = response.result.value else {
                    return
                }
                let json = JSON(object)
                let number: Int = json["result"]["number"].int!
                _response_numbers.append(number)
                if number != 0 {
                  self.getMessageList()
                }
        }
    
    }
    
[/code]


CC BY-SA 3.0
2016-09-08T01:51:28.733
28754
2016-09-08T01:51:28.733
16765
28743
answer