李恒道 发表于 2023-5-31 21:35:50

cxxjackie 发表于 2023-2-16 22:56
Promise的.then的写法本身也是一种回调,并不能规避回调地域:

真正将回调展平的是async/await:

c大,我又来品味了一下这段话,

如果使用了回调

我们可以将每个函数的检测都视为一个任务节点,那么传统的回调各自相互包含的,我们认为函数 A 包含函数 B,而函数 B 包含函数 C

明明同样是检测,只是检测不同的东西,在逻辑上应该是属于一个贯通的,但是代码上却互相包含,实际是反直觉的

如果使用了Promise

这个时候函数直接的视觉上的逻辑是一个平级的,函数 A 后调用 B,函数 B 调用函数 C,每个都是相互独立并且行为和逻辑上是贯通的,这就是 Promise 的意义,也是异步编程的意义,原本割裂的代码得以组合到一起,本质是一种编程思想上的转变。

这样理解应该对吧

李恒道 发表于 2023-5-31 21:45:27

cxxjackie 发表于 2023-2-16 22:56
Promise的.then的写法本身也是一种回调,并不能规避回调地域:

真正将回调展平的是async/await:


我怕不直观,再贴个图
![图片.png](data/attachment/forum/202305/31/214519fnrezbb5rr8lt8du.png)

cxxjackie 发表于 2023-5-31 22:31:07

李恒道 发表于 2023-5-31 21:45
我怕不直观,再贴个图
![图片.png](data/attachment/forum/202305/31/214519fnrezbb5rr8lt8du.png)[/ ...

我倒是觉得互相包含不违反直觉,因为任务之间是有先后顺序的,无关顺序的任务使用并列的回调,这个在逻辑上没有问题。看起来别扭的主要原因是,编程语言天生就有顺序性(面向过程),后一句代码在前一句之后执行,这是自然而然的想法,但是回调写法打破了这种理解,Promise带来异步编程,async/await又将异步编程带回了顺序性的结构。

另外纠个错,你写了2个waitForLoad函数{:4_108:}

李恒道 发表于 2023-5-31 22:52:01

cxxjackie 发表于 2023-5-31 22:31
我倒是觉得互相包含不违反直觉,因为任务之间是有先后顺序的,无关顺序的任务使用并列的回调,这个在逻辑 ...

太细了
大佬最新的话也加上了
感觉这回文章终于趋于完整了
牛逼!!!
页: 1 [2]
查看完整版本: [油猴脚本开发指南番外篇]为什么我们需要Promise