疑问,这一系列的异步操作如何做同步化改造?有这个必要吗?

Posted 一直问

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了疑问,这一系列的异步操作如何做同步化改造?有这个必要吗?相关的知识,希望对你有一定的参考价值。

    在p204有下面这个例子,当然,书中并没有给出step1...step4的实现,这个实现是我加的。

  1. function step1(func){
  2. process.nextTick(function(){
  3. console.log(‘step1‘);
  4. func(1);
  5. });
  6. }
  7. function step2(val, func){
  8. process.nextTick(function(){
  9. console.log(‘step2,‘ + val);
  10. func(val+1);
  11. });
  12. }
  13. function step3(val, func){
  14. process.nextTick(function(){
  15. console.log(‘step3,‘ + val);
  16. func(val+1);
  17. });
  18. }
  19. function step4(val, func){
  20. process.nextTick(function(){
  21. console.log(‘step4,‘ + val);
  22. func(val+1);
  23. });
  24. }
  25. step1(function(val1){
  26. step2(val1, function(val2){
  27. step3(val2, function(val3){
  28. step4(val3, function(val4){
  29. console.log(‘val4, ‘, val4);
  30. })
  31. })
  32. })
  33. })
    我想既然这些函数要接受一个回到函数,肯定是因为内部有一些操作是异步的,比如这个nextTick,或者是ajax调用,等等。
    我现在不明白的是,作者在205中假定了step1...step4已经进行了同步化改造。然后再用generator函数来调用这些函数,那么究竟改造之后的step1...step4函数是什么样的呢?他如何把其中的异步操作变成同步的呢?
    而且有必要变成同步的吗?javascript的美妙不就是因为他可以大量的使用异步吗?我觉得promise的语法挺优美的啊,为啥要进行generator的同步化改造呢?


    

以上是关于疑问,这一系列的异步操作如何做同步化改造?有这个必要吗?的主要内容,如果未能解决你的问题,请参考以下文章

Promise你把握不住?来看看异步转同步改造

如何在javascript中以异步方式解析和字符串化

测试平台系列(52) 改造异步数据库连接方案

Dubbo 2.7新特性之异步化改造

chapter15中使用generator来实现异步化操作的同步化表达的例子

Dubbo 2.7新特性之异步化改造