ecomfe / es6-code-style

Discuss & record
1 stars 0 forks source link

async functions #11

Open otakustay opened 9 years ago

otakustay commented 9 years ago

统一使用规则,在一个项目/包中,要么全用,要么全不用,混用只会让理解更难

如果选择全用,那么:

  1. 基本不会出现then的调用,都是await,特殊情况看后文
  2. 基本不会出现catch的调用,都是try/catch,特殊情况看后文
  3. 所有返回或使用Promise的函数统一标上async,此时jsdoc上的@return可以直接写resolve后的类型,这样把异步函数难写jsdoc的问题也解决了
  4. 不要写return await xxx();,没任何意义,await只在函数流程的中间用,表示不要立刻执行下一行代码,而return是最后一行了
  5. 不可避免地还是会要用到new Promise的形式,比如把一些事件转成Promise,所以不要认为async可以让你看不到Promise

特殊情况:

  1. 你需要返回一个非标准的Promise,比如一个带有abort()方法的XHR对象,那么你不能使用async函数
  2. 你要对一个Promise做后续逻辑处理但是返回的依旧是这个Promise本身而不是then衍生出来的新的Promise,那么就要用到thencatch
otakustay commented 9 years ago

这一块我要改一下,经过实践,我现在的思路是能不用就不用,没必要所有返回Promise的都标上async