getting-started-with-javascript icon indicating copy to clipboard operation
getting-started-with-javascript copied to clipboard

关于间接返回的问题

Open xugy0926 opened this issue 6 years ago • 3 comments

下面是同学在作业里提出两个问题。

老师说,异步函数帮助在等待获取数据时和用户进行交互。那么如果使用直接返回,那么浏览器在函数运行时就不能显示loading页面吗?

异步函数以及间接返回和直接返回最根本的区别是什么?老师讲的区别是是否经由另一选定通道返回。经由其他通道返回和能否同时运行loading页面之间是什么关系?

xugy0926 avatar Aug 29 '17 04:08 xugy0926

老师说,异步函数帮助在等待获取数据时和用户进行交互。那么如果使用直接返回,那么浏览器在函数运行时就不能显示loading页面吗?

=> 同步处理一定会死等结果。如果处理过程很长,你将没有办法执行下面的代码。 假如你的代码如下:

  1. 调用一个非常耗时的函数,并死等结果。
  2. 结果返回后显示loading页面。

如果改成异步:

  1. 调用一个耗时的异步函数。
  2. 调用完后显示loadding页面。
  3. 结果通过回调返回后,把loadding页面撤销。

xugy0926 avatar Aug 29 '17 04:08 xugy0926

异步函数以及间接返回和直接返回最根本的区别是什么?老师讲的区别是是否经由另一选定通道返回。经由其他通道返回和能否同时运行loading页面之间是什么关系?

=> 一个同步函数,有两种返回结果的方式。立即返回和间接返回。但是,同步函数虽然可以用间接返回,但是有点多此一举的行为。

就像我课程中举的例子,老板告诉秘书查航班信息,在线等结果,急。但老板要求秘书把结果发到微信里。这很奇怪吧。

间接返回在同步处理过程中用得不恰当,但是一种手段。

在异步处理中,只能通过间接返回结果。

xugy0926 avatar Aug 29 '17 04:08 xugy0926

昨天晚上同步,同步间接返回和异步返回我觉得老师讲同步间接返回是为了进一步引出callback函数,然后在callback的基础上引入setTime函数解释异步

huyong007 avatar Jan 23 '18 03:01 huyong007