拉取全部数据在技术上是可以实现的,但是我劝你别这样做!
1.请求会非常耗时
2.我保证600条数据你就会感到卡顿
3.6000条不是个小数目,这种瀑布流的加载方式肯定有他的道理
4.对服务器也是一种不友好的行为
5.通过递归就能实现获取所有数据
我知道啊 ,而且数据的信息又在不停地更新,我存在数据库也好像没什么意义。递归获取所有的信息还不是一样卡
@阿鸠: 递归获取所有肯定卡呀,我只是说这样能实现而已..
非要这样做,只能循环去取。。
var userList = [];//信息存储在这,总列表 function userList(id){ var data ={ last-fans-id:id } $.ajax({ url: '接口地址', type: 'POST', data: data, async: false, success: function (resp) { userList.push(此处为你接收到的用户信息); //此处判断是否有last-fans-id,有则继续请求,无则终止请求 if(has-next){ userList(last-fans-id); } }, error: function () { } }); } userList(last-fans-id);
大致就是这么个意思,你可以根据具体情况修改一下
你看了文档了吗?额,我不是很懂
@阿鸠: 没看,兄弟,我觉得大家只是给你提供个思路供你参考,具体还是要你自己去实现,这样才能进步。如果这种小问题都要别人把代码一点不差的写给你,那你下次怎么办。况且我上面写这个已经很接近了,你可以根据这个思路自己尝试去写一下,如果实在不会随时可以问
@与阳光握手言和: 我是用php请求接口的数据然后存在数据库,我用了一个do{}while循环去读取,但是太卡了,而且接口的数据会更新,现在又感觉要定时去拉去数据,很麻烦!
我的代码如下:
1 public function weixin_followers_pull() 2 { 3 $obj = new Youzan(); 4 $access_token = $obj->get_access_token(); 5 $token = $access_token;//请填入商家授权后获取的access_token 6 $client = new \YZTokenClient($token); 7 $method = 'youzan.users.weixin.followers.pull'; //要调用的api名称 8 $api_version = '3.0.0'; //要调用的api版本号 9 $my_params = ['after_fans_id' => '0']; 10 $my_files = []; 11 $result = $client->post($method, $api_version, $my_params, $my_files); 12 unset($result['response']['tags']); 13 unset($result['response']['level_info']); 14 $last_fans_id= $result['response']['last_fans_id']; 15 pre($result['response']); 16 //\think\Db::name('weixin_followers')->insert($result['response']['users']); 17 do{ 18 $method = 'youzan.users.weixin.followers.pull'; //要调用的api名称 19 $api_version = '3.0.0'; //要调用的api版本号 20 $my_params = ['after_fans_id' =>$last_fans_id]; 21 $my_files = []; 22 $result1 = $client->post($method, $api_version, $my_params, $my_files); 23 $last_fans_id=$result1['response']['last_fans_id']; 24 $has_next=$result1['response']['has_next']; 25 unset($result1['response']['tags']); 26 unset($result1['response']['level_info']); 27 pre($result1); 28 sleep(10); 29 // $db=\think\Db::name('weixin_followers')->insert($result1['response']['users']); 30 31 }while($has_next);
@阿鸠: 你是做php的啊,我看题目以为是前端呢,php我只懂一点,不敢瞎说,建议你在问题那修改一下,标上是php,请自动忽略我之前的评论,O(∩_∩)O哈哈~祝好
直接循环有什么难点吗?
每次返回的参数都不一样,而且很卡
@阿鸠: 卡看是网络请求慢.还是你本地处理慢.网络请求慢的话就别管了.
返回值的结构看着是不会变的吧?和文档说的不一样吗
你这个问题在于蹩脚的需求 而非技术本身
一开始我以为题主是不会写代码。
看到后来,才知道题主是不会做需求分析和系统设计。
我是一名刚入职的程序员哈哈哈,遇到了很多的问题,还希望大叔指指路,抱拳了
@阿鸠: 你看看你问的问题,还有别人的回答。
想想以后如何问问题,这个最重要。
新手最大的问题是不知道如何问问题。
1、不说你的语言,就有人回答JS。
2、你这确实是一堆问题,而不是一个问题。你必须学会把一堆问题拆开来一个个解决。
3、“我怎样才能做到拉去到全部的数据??????" 这样写我确实以为你是不懂写代码。
4、你现在的问题是,慢还是不懂这样设计对不对,慢那没法子,别人提供的接口,除非你收购对方公司。
5、如果是设计问题,那么没有人知道你的原始需求是啥,没法给你提供建议。
@爱编程的大叔: 谢谢大叔,铭记在心,抱拳