如题 我用的是afnetworking这个网络框架 现在做了一个搜索 但是这个搜索是要网络请求的 现在遇到一个这个问题 当我第一个字输入后 它便进行搜索 但是再输入第二字时 会很卡 因为正在请求数据 有时往往第二字输入很久后第一个的搜索结果才出来 有没有什么办法在输入第二字后 断开第一次的请求 马上执行第二次请求 求解答 或者更好的思路 最好有代码 先谢谢了
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
用 ReactiveCocoa(https://github.com/ReactiveCocoa/ReactiveCocoa).
这里有篇教程实现了类似的功能:http://blog.scottlogic.com/2015/05/15/mvvm-reactive-cocoa-3.html
核心代码如下(主要是加了个 throttle 控制一秒内只能请求一次):
没什么好办法
连续输入 别 搜索
每次输入后 停1秒 没有输入了再去搜索~
没有使用过afnetworking,使用NSSession,但原理差不多.
1.如果在出入第二个字时出现卡顿,可能是你的网络请求和结果解析是在主线程中执行的,这会阻塞UI.先检查网络请求是否是在主线程中执行,如果是,可能需要创建一个新的线程执行网络请求,然后将结果回调.
2.一种是将结果缓存,伪代码
第二种,参考 函数节流
可以让服务器返回的结果带上当时这个请求的搜索内容。
在请求返回回调中,判断一下,如果这个请求的返回的搜索内容与当前搜索框的内容一致,才去处理其他内容(刷新页面)。
这样就可以做到实时搜索。