用javascript介绍回调控制过程
1。如果没有显式返回,很容易产生多余的过程,以及产生的bug。
2。使代码无限嵌套,难以读取。
让我们谈谈如何避免上述问题。
第一个问题是习惯问题,当使用回调时,常常会让人忘记使用返回,在这种情况下,尤其是在使用咖啡脚本(虽然它将收集最终数据作为返回值时,但是返回值不一定代表您在编译的Javascript中的思想)。
复制代码代码如下所示:
a(错误,回调)>
回调()
log'you会看到我的控制台。
B = >
log'i是回调的控制台。
一个(错误,B)
在这种所谓的错误第一代码风格中,显然我们不想犯错误。方法A中的后续代码仍然被执行,但它不希望使用抛出来挂断整个进程。(死亡或优雅地死去),上面的代码会产生bug。
一个解决办法是诚实地对待…其他的…但我更倾向于做以下事情:
复制代码代码如下所示:
a(错误,回调)>
如果错误返回回调()
控制台。log'you不会看到我
B = >
log'i是回调的控制台。
一个(错误,B)
Javascript异步方法中的大多数返回值没有什么用处,所以这里返回作为进程控制角色使用,这比…其他的…更少的代码。
第二个问题是娘胎里带来的,很难根除。
一个好的方法是使用一些过程控制模块,使代码更有组织性。例如,如果是一个很好的模块,提供一系列的接口,包括迭代,循环,条件语句,甚至一个排队系统。下面的例子可以证明的优点和缺点两种写作。
复制代码代码如下所示:
#正常
第一=(回调)>
控制台。log'i是第一功能
()回调
第二=(回调)>
控制台。log'i是第二功能
()回调
第三=(- >)
控制台。log'i是第三功能
第一>
二>
第三()
#使用异步
async =需要('async)
async.waterfall {
第一,
二,
第三
(错误)- }。
作为明智的你,你会选择哪一个。