我正在调用我从服务器获取数据的API。当响应具有nextpageToken时,该函数使用pagetoken调用自身。
代码工作正常,但它是make stackoverflow Exception。如果这个东西需要调用350次(每次使用new pagetoken进行方法调用),那就会造成stackoverflow异常。
例如这是代码。
user.password
有人请检查如何解决这个问题。以前我在Task中运行了一些子项,但它失败了,因为API命中太快,所以我删除了该任务。
现在它是单线程代码,它仍然无法正常工作。
答案 0 :(得分:4)
使用循环 - 将您的方法分为两部分。 制作第二个不处理NextPage令牌的方法,这个新方法只返回结果。
在“GetData”方法中你可以做这样的事情
public static void GetData(Channel info, string pagetoken =null)
{
// get the data from api
var result = GetResultFromServer(info,pagetoken);
while(result != null)
{
//handle content of one page
//
// do something with one page.. add it to a result list or whatever
// you have to do
//
if(result.nextPageToken != null)
{
var result = GetResultFromServer(info,result.nextPageToken )
}
else{result = null}
}
// enter into database
return;
}
答案 1 :(得分:3)
像
这样的东西string pageToken=null;
do {
pageToken = Getdata(info, pageToken):
} while (pageToken != null)