gpt4 book ai didi

javascript - 通过 URLS 的 promise

转载 作者:行者123 更新时间:2023-11-30 16:50:16 26 4
gpt4 key购买 nike

我正在尝试找出一种方法来处理动态数量的 URL。我们的想法是运行一段时间,直到我们达到我们正在搜索的任何内容的限制 - 例如,让我们说 URLS。

    return new Promise(function(resolve, reject) {
var links = [];
var uri = feed.uri;
var promise;
var loadMore = true;
var waiting = false;
var page;
while(loadMore) {
if(!waiting) {
waiting = true;
promise = getListings(uri, feed, limit);
promise.then(function(result) {
for (var i = 0; i < result.length; i++) {
if(links.length < limit) {
links.push(result[i]);
}
}
if(links.length < limit) {
// Load Pagination
uri = paginator.process(uri, feed, opts);
waiting = false;
} else {
resolve(links);
loadMore = false;
}
});
}
}
});

这就是我目前所拥有的,但它没有正确运行。我需要它做的是遍历原始 URL,然后继续遍历下一页,将 URLS 添加到链接列表。您可以假设分页器工作并返回该特定网站的下一个 URL(例如 www.google.com/page2)getListings 工作正常并返回一个链接数组。

我如何才能将这些 promise 链接起来,以便它可以遍历任意数量的页面(如果存在),并返回它找到的完整链接数组?

当在 promise.then() 中达到限制时,我似乎无法将 loadMore 变量更改为 false。我希望它能够通过第一个 URL,然后通过下一个 URL,直到达到限制。

我感谢任何有关如何将其组合在一起的资源或想法。

最佳答案

在你的 promise 中使用递归而不是循环。像这样:

var links = [];
function fetchNext(result) {
for (var i = 0; i < result.length; i++) {
if(links.length < limit) {
links.push(result[i]);
}
}

if (links.length < limit) {
// Load Pagination
uri = paginator.process(uri, feed, opts);

// Recursion
return getListings(uri, feed, limit).then(fetchNext);
}
else {
return Q.fulfill(links); // Return resolved promise
}
}

// Start recursion
var promise = fetchNext([]);
// or var promise = getListings(uri, feed limit).then(fetchNext);

关于javascript - 通过 URLS 的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30630332/

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