objective-c - ios 请问如何控制实时网络请求搜索
PHP中文网
PHP中文网 2017-04-17 16:42:48
[iOS讨论组]

如题 我用的是afnetworking这个网络框架 现在做了一个搜索 但是这个搜索是要网络请求的 现在遇到一个这个问题 当我第一个字输入后 它便进行搜索 但是再输入第二字时 会很卡 因为正在请求数据 有时往往第二字输入很久后第一个的搜索结果才出来 有没有什么办法在输入第二字后 断开第一次的请求 马上执行第二次请求 求解答 或者更好的思路 最好有代码 先谢谢了

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
PHPz

没什么好办法
连续输入 别 搜索
每次输入后 停1秒 没有输入了再去搜索~

PHPz

没有使用过afnetworking,使用NSSession,但原理差不多.
1.如果在出入第二个字时出现卡顿,可能是你的网络请求和结果解析是在主线程中执行的,这会阻塞UI.先检查网络请求是否是在主线程中执行,如果是,可能需要创建一个新的线程执行网络请求,然后将结果回调.
2.一种是将结果缓存,伪代码

result;    //用于储存请求结果
cache ;    //缓存

Cache()
{
    cache = result;
    延时;  //在延时期间可能发生了新的网络请求
    if (cache  == result){  //是否有新的数据
    解析并展示到UI
    }
    else{
        Cache();
    }
}
//这种我没有实践过,不知道到效果如何.

第二种,参考 函数节流

阿神

可以让服务器返回的结果带上当时这个请求的搜索内容。
在请求返回回调中,判断一下,如果这个请求的返回的搜索内容与当前搜索框的内容一致,才去处理其他内容(刷新页面)。

这样就可以做到实时搜索。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号