zoukankan      html  css  js  c++  java
  • Generator的异步编程

    对比下常用的异步处理的方案:

    1,回调

    我们常说的 “回调地狱”,就是多个异步操作时候,代码多重嵌套,异步之前形成强耦合,如果修改一处,其他地方也是跟着修改。(callback hell).

    2,promise

    其实promise的出现呢,就是为了解决回调地狱的问题,不是多重嵌套,而是链式调用,就是针对回调函数的改进,使用then的方法,但是代码依然是冗余,如果异步多的话,一堆的then。

    3,Generator函数

    协程(coroutine),多线程互相协作,完成异步操作。

    运行流程:

    协程A开始——A执行到一半,暂停,执行权到协程B——一段时间后B交还执行权——A恢复执行。

    上面的协程A就是个异步的操作。执行一半停下来,过段时间再从暂停的地方开始执行。

    Generator函数里面的yield命令 是异步两个阶段的分界线。

    协程遇到yeild命令就暂停,等到执行权返回再从暂停的地方继续往后执行。

  • 相关阅读:
    LeetCode_326. Power of Three
    LeetCode_303. Range Sum Query
    LeetCode_299. Bulls and Cows
    LeetCode_292. Nim Game
    LeetCode_290. Word Pattern
    LeetCode_283. Move Zeroes
    LeetCode_278. First Bad Version
    LeetCode_268. Missing Number
    LeetCode_263. Ugly Number
    LeetCode_258. Add Digits
  • 原文地址:https://www.cnblogs.com/tangjiao/p/9050968.html
Copyright © 2011-2022 走看看