NSURLSession HTTP客户端未按正确顺序返回请求

时间:2016-11-01 18:24:10

标签: cordova cordova-plugins nsurlsession

我写了一个插件来执行GET / POST调用。 大多数呼叫都有效,除非我有多个呼叫:P。

在XCode中调试我可以看到来自调用的数据(响应)然而不是我期望的顺序。 如何确保响应的顺序正确?

错误示例:我发出3次调用,在我的JS代码中,我收到call02而不是call01的响应。

我的参考代码: http://pastebin.com/npgNn2Jk

1 个答案:

答案 0 :(得分:0)

哦,男人,终于找到了问题哈哈。 问题是全局的callbackID:

self.callbackId = command.callbackId;

一旦我更新代码以将callbackId传递给POST / GET,一切都开始正常工作。

发布此处以防其他人遇到此问题:

在:

- (void)http:(CDVInvokedUrlCommand*)command {
    self.callbackId  = command.callbackId;

    // NSURLSessionConfiguration
    [self initializeSession:headers];
    if ([method isEqualToString:@"POST"]) {
        [self doPost:url withData:data withHeaders:headers];
    } else {
        [self doGet:url withQueryString:queryString];
    }
}

后:

- (void)http:(CDVInvokedUrlCommand*)command {
    self.callbackId  = command.callbackId;

    // NSURLSessionConfiguration
    [self initializeSession:headers];
    if ([method isEqualToString:@"POST"]) {
        [self doPost:url withData:data withHeaders:headers withCommandID:command.callbackId];
    } else {
        [self doGet:url withQueryString:queryString withCommandID:command.callbackId];
    }
}