老师,这块代码没太懂,不太理解回调函数

老师,这块代码没太懂,不太理解回调函数

https://img1.sycdn.imooc.com//climg/62fcbb39083c2f7c15520868.jpg

老师,这部分的代码逻辑我不太懂。

1、什么是回调函数?还是内部执行逻辑不太懂?

2、handle_pic_parse()函数中的response是如何传递进去的?

3、异步和多线程的区别是什么?为什么使用多线程呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小猿 2022-08-17 18:30:31

同学,你好!1、回调函数是一个被作为参数传递的函数。内部执行逻辑同学可以参考下图代码的执行过程:执行A(B)时,调用函数A,函数B作为参数在函数A中调用并执行,称为回调函数

https://img1.sycdn.imooc.com//climg/62fcc2e109d00ec704500373.jpg

2、Scrapy是一个爬虫框架,内部有许多的代码组成,handle_pic_parse( )函数中的response就会在Scrapy框架的内部去传递,关于内部的源码同学需要有一定知识储备后再去深入研究会比较简单点,我们在使用时根据Scrapy的规则使用即可

3、异步是一个概念,是指一个线程去执行它的下一个线程不必等待它执行完就开始执行。多线程是实现异步的一种方式。祝学习愉快~


  • 提问者 慕田峪6467393 #1

    老师,我可以理解为yield和多线程一样,是实线异步的一种方式吗

    2022-08-17 20:45:46
  • 好帮手慕美 回复 提问者 慕田峪6467393 #2

    同学,你好!不一样的,

    1、用了yield的函数会返回一个生成器,生成器不会一次把所有值全部返回给你,而是每调用一次next就会返回一个值,而scrapy内部则就是处理这样的next。

    2、yield作用:通过yield 来发起一个请求,通过 callback 参数为这个请求添加回调函数,在请求完成之后会将响应作为参数传递给回调函数。

    祝学习愉快!

    2022-08-18 10:06:13
  • 提问者 慕田峪6467393 #3
    老师,next函数是在哪里调用的呢?代码里并没有调用next函数呀?
    2022-08-18 21:44:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师