官方例子cc.loader.getXMLHttpRequest()循环请求Http超时

sendXHR2: function(i = 0) {
    var xhr = cc.loader.getXMLHttpRequest();

    xhr.onreadystatechange = () => {
        if (xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)) {
            console.log('response', i);
            setTimeout(() => this.sendXHR2(++i), 500);
        }
    };

    xhr.open("GET", "http://baidu.com", true);
    if (cc.sys.isNative) {
        xhr.setRequestHeader("Accept-Encoding", "gzip,deflate");
    }

    xhr.timeout = 5000;

    xhr.send();
}

官方例子代码,我稍微改造了一下,大致逻辑没变动,意思是请求一个http地址,收到回复后间隔0.5秒再次发起请求,嵌套调用100多次,必然超时。

我的Creator版本1.9.3.

1赞
static bool XMLHttpRequest_finalize(se::State& s)
{
    XMLHttpRequest* request = (XMLHttpRequest*)s.nativeThisObject();
    SE_LOGD("XMLHttpRequest_finalize, %p ... \n", request);
    if (request->getReferenceCount() == 1)
    {
        request->autorelease();
    }
    else
    {
        request->release();
    }
    return true;
}
SE_BIND_FINALIZE_FUNC(XMLHttpRequest_finalize)

看到有个XMLHttpRequest_finalize方法,是不是xhr没有释放掉呢?

在2.1.1上跑了下,似乎XMLHttpRequest_finalize调用十分及时,没有请求中断过,接下来让我们一起来对比一下引擎底层到底修改了什么。拭目以待吧。

老哥 后来问题解决了么

有解决方案吗?