【发布时间】:2018-10-28 14:09:54
【问题描述】:
我正在写一个爬虫。任务是在最坏的情况下扫描 10 页。我可能只需要扫描 1 页,但这取决于页面内容。如果第一页上没有我要查找的项目,那么我们将移至第二页,直到达到 10 页。我们对第 11 页及更多内容不感兴趣。所以我们有一个限制。我想调用第 1 页的请求,如果找到项目,则中断 for 循环并解析 Promise。
伪代码:
func findItem(item: Item): Promise<PageIndex> {
for (let page=1; page<=10; page++) {
create url with page as url
create promise that request url and resolve to content as content
if content contains item {
return Promise.resolve(page); // We are interesting in on which page the item is.
// Here we are breaking loop and exit function because we
// Found what we were looking for
}
// continue to next page because content does not contain item on this page
}
// We didnt find item on first 10 pages
return Promise.resolve(-1)
}
所以我不知道如何使用 Native Promises 和 Typescript 来实现这一点。我知道 Promises 一般是如何工作的,并且我多次使用它们,但这个用例对我来说是新的。有人可以帮忙吗?
【问题讨论】:
-
使用递归或
async/await语法
标签: javascript typescript promise