关于异步与回调函数的疑问

关于异步与回调函数的疑问

请问回调函数之所以产生异步是因为在编译的过程中先编译外围的函数,然后再调用编译括号内的函数,然后一直编译下去,就形成了一步一步的异步,对吗?

还有一个疑问,在Promise中,then函数是默认有一个result参数吗,而这个result的值是resolve函数返回值吗?

下载视频          

下载视频          

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

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

2回答
ccmouse 2022-10-06 15:19:21

这个和编译没有关系。回调和异步都发生在运行时。这些问题需要先深入理解函数式编程。建议结合之前章节一起看。

我们以这个文档做例子。

// callback 形式调用
wx.chooseImage({
  success(res) {
    console.log('res:', res)
  }})
  
// promise 形式调用
wx.chooseImage().then(res => console.log('res: ', res))

callback形式,chooseImage函数的参数是一个函数。但是这个函数此时只是一些代码(准确的说,一个闭包),并没有被运行。

  • 流程上,chooseImage要弹框让用户选择图片。用户选完之后,chooseImage函数才把选择的图片作为参数res调用这个一开始传进来的success函数。

  • 实际上,chooseImage本身也和下面的比如弹文件选取对话框等进行异步交互。chooseImage发起了弹框之后就立刻返回了。chooseImage之后的代码会先被运行。当用户选择完文件后,chooseImage交给下层的回调被调用,在那里,进行了一些文件名,返回值的包装等,再作为res参数调用success。

promise形式的运行过程和callback模式一样,只是代码简洁易懂。then的参数也是一个函数,这个函数的参数就是resolve中传入的内容。

  • 提问者 慕妹2590417 #1
    理解了,作为参数的函数需要return之后,这个函数才能运行
    2022-10-06 18:44:02
提问者 慕妹2590417 2022-10-02 23:55:47
还有一个疑问,promise异步是把回调异步改成了链式异步吗
下载视频          
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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