gpt4 book ai didi

javascript - 优化异步查找算法

转载 作者:行者123 更新时间:2023-11-29 15:02:40 24 4
gpt4 key购买 nike

我有一系列连续命名的页面(URL,如:http://example.com/book/1http://example.com/book/2 等),但我无法提前知道有多少页。我需要检索每个页面的(特定部分),按顺序保持获取的信息,不遗漏任何页面,并请求最少数量的空页面。

目前,我有一个递归异步函数,有点像这样:

pages = []

getPage = (page = 1) ->
xhr.get "http://example.com/book/#{1}", (response) ->
if isValid response
pages.push response
getPage page++
else
event.trigger "haveallpages"

getPage()

xhr.getevent.trigger 是伪代码,目前是 jQuery 方法(但可能会改变)。 isValid 也是伪代码,实际上是函数内部定义的测试,但它很复杂,与问题无关。

这很好用,但速度很慢,因为一次只处理一个请求。我正在寻找的是一种更好地利用 XHR 的异步特性并在更短的时间内检索完整列表的方法。有没有可以帮助我的模式?或者更好的算法?

最佳答案

只需触发并发请求,同时对它们进行计数。无需猜测上限,只需在请求开始失败时停止,就像在您的原始代码中一样。

这将产生最多 concurrency-1 个浪费的请求:

pages        = []
concurrency = 5
currentPage = 0
haveAllPages = false

getPage = (p) ->
xhr.get "http://example.com/book/#{p}", (response) ->
if isValid response
pages.push response
getPage ++currentPage if not haveAllPages
else
haveAllPages = true

while concurrency--
getPage ++currentPage

关于javascript - 优化异步查找算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7830098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com