美文网首页
Flow搜索优化

Flow搜索优化

作者: 克罗克达尔 | 来源:发表于2022-04-12 14:42 被阅读0次

我们一般会监听文本变化,文本变化后就发起搜索请求。
但现在有两个问题

1. 毫无意义的中间搜索

比如用户快速输入123456789,我们希望只发起一次请求123456789,而不是发起9次请求(每次变化都发起请求),我们可以使用sample操作符

2.请求和响应顺序不一致导致显示的结果有误

比如我们先搜索123再搜索456,按照正常顺序123的搜索结果先返回,456的搜索结果后返回,页面最终显示456的搜索结果,没毛病。
但如果先返回456的搜索结果,再返回123的搜索结果,就会出现123的搜索结果覆盖456的搜索结果,结果就是错的。解决方法是mapLatest操作符。

代码如下


class MainActivity : AppCompatActivity() {


    private val _search = MutableStateFlow("")

    private lateinit var content: TextView

    private lateinit var editText: EditText

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        content = findViewById(R.id.content)
        editText = findViewById(R.id.search)



        lifecycleScope.launch {
            _search.sample(500)
                .filter {
                    it.isNotEmpty()
                }
                .mapLatest {
                    map(value = it)
                }.collect {
                    Log.d("TAG", "收到了结果 $it")
                    content.text = it
                }
        }

        editText.addTextChangedListener {
            _search.value = it.toString()
        }
    }

    private var current = 5

    private suspend fun map(value: String): String = withContext(Dispatchers.IO) {
        Log.d("TAG", "发起了请求 $value ,delay = $current")
        delay(current * 1000L)
        current -= 3
        if (current <= 0) {
            current = 5
        }
        value
    }

}

相关文章

  • Flow搜索优化

    我们一般会监听文本变化,文本变化后就发起搜索请求。但现在有两个问题 1. 毫无意义的中间搜索 比如用户快速输入12...

  • [正确]的使用Kotlin Flow进行搜索优化

    引言 用户搜索时,为了避免产生无意义的搜索请求,通常会进行搜索数据限流。熟悉RxJava的同学,一定会知道怎么做,...

  • 「正确」的使用Kotlin Flow进行搜索优化

    引言 用户搜索时,为了避免产生无意义的搜索请求,通常会进行搜索数据限流。熟悉RxJava的同学,一定会知道怎么做,...

  • git-flow 初探

    安装git-flow 请自行搜索 -$ git flow init git-flow 模式会预设两个主分支在仓库中...

  • 用jina快速构建搜索服务

    神经搜索工具 特定语法 excutor 编写自己的flow; flow 提供api接口,定义好输入输出,比较灵活;...

  • 搜索引擎优化

    搜索引擎优化 SEO(Search Engine Optimization):汉译为搜索引擎优化。搜索引擎优化是一...

  • 增长黑客第三章(三)

    关键词:捆绑下载,搜索引擎优化, 3.6 搜索引擎和应用商店的优化营销 搜索引擎优化:利用搜索引擎的排序规则,通过...

  • 小白入门 | 做好SEO优化,只需八步

    SEO中文解释就是“搜索引擎优化”的意思,也可以理解为“百度搜索引擎优化”、“谷歌搜索引擎优化”、“360搜索引擎...

  • SEO是什么?

    定义 Search Engine Optimization 搜索引擎优化(SEO),即搜索引擎优化,是一种利用搜索...

  • 百度优化和百度竞价的区别在那里?

    百度优化指的是百度的搜索引擎优化,一般来说包括品牌搜索优化和行业性关键词的搜索优化,这个优化包括网站也包括第三方平...

网友评论

      本文标题:Flow搜索优化

      本文链接:https://www.haomeiwen.com/subject/qixnsrtx.html