scala callback hell
scala具有异步的编程范式,既然是异步编程,就一定要了解scala中怎么解决callback hell问题。事实上不需要第三方工具,它自己的语法糖for comprehension就能写出易读的代码。
scala中的callback hell大概长这样:
之所以会形成callback hell是因为,在异步编程中,难免有一些动作是有先后顺序的,否则全都并行执行,就不会有这个问题。
使用语法糖for comprehension后的代码大概长这样:
嗯,这样的代码就容易理解多了,但它只是一个语法糖,编译过后任然是类似上面的callback hell。
到此为止还没完,实际工作中还有个很常见的场景,就是这个过程中,会有一些判断,如果不符合判断就跳出,下面的代码就没必要执行了,比如像这样:
由于b,c,d都是临时占位符(Future),此时数据都还没有真正拿到,所以这里的if判断这样写是会出错的。
可以这样解决:
在web开发中,如果findByxxx是service层的方法,那么controller层可以捕获该异常,并做一下对用户友好的封装或转换就ok了。
题图:慕士塔格峰
版权声明: 本文为 InfoQ 作者【HackMSF】的原创文章。
原文链接:【http://xie.infoq.cn/article/193d246689b7c2f8b3e39f5cc】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论 (1 条评论)