自学的 Javascript,不懂怎么实现函数的顺序执行,请教。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
delikely

自学的 Javascript,不懂怎么实现函数的顺序执行,请教。

  •  
  •   delikely Oct 1, 2017 5010 views
    This topic created in 3133 days ago, the information mentioned may be changed or developed.

    自学 Javascript,正在写点小东西。被程序的流程给搞蒙了。

    请问 V 友,怎么实现 A ()执行完后才运行 B ()。

    之前用settimeout用着用着自己就晕了,有什么比较好的方案吗?

    17 replies    2017-10-02 18:28:55 +08:00
    mrzhiin
        1
    mrzhiin  
       Oct 1, 2017
    async await
    caomu
        2
    caomu  
       Oct 1, 2017 via Android
    上面是新方法

    老方法是 callback
    WriteJob
        3
    WriteJob  
       Oct 1, 2017
    1. 创建个全局变量 flag(标志)为 false,函数 A 执行完后,把这个标志设为 true。然后写个判断如果这个标志等于 true,函数 B 就执行,执行完再把这个标志设为 false。
    2. ES6 就用 Promise 或者楼上提到的异步。
    FrankFang128
        4
    FrankFang128  
       Oct 1, 2017
    a()
    b()
    liuzhiyong
        5
    liuzhiyong  
       Oct 1, 2017 via iPad
    @FrankFang128 哈哈,我也是这样想的。
    isbase
        6
    isbase  
    PRO
       Oct 1, 2017
    function a(cb) {
    // do something
    cb()
    }

    function b() {}

    a(b)
    zhlssg
        7
    zhlssg  
       Oct 1, 2017
    首先搞清楚你的函数是同步执行还是异步执行的吧
    delikely
        8
    delikely  
    OP
       Oct 1, 2017
    @zhlssg 测试发现是异步执行(所以才来问的)的,请问怎么指定函数的执行方式。有什么资料推荐吗。谢谢!
    zhlssg
        10
    zhlssg  
       Oct 1, 2017
    @delikely 9L
    正解,最方便的是 promise,如果用了 babel 的话,可以用 async await
    romennts
        11
    romennts  
       Oct 1, 2017
    ```
    async.series({
    flag1:function(done){
    done(null,authres);
    });
    }
    },function(error,results){
    console.log(results);
    })
    ```

    类似于这样吧....
    SilentDepth
        12
    SilentDepth  
       Oct 1, 2017
    函数的执行方式不是「指定」出来的。不如发一下你的代码?怎样的 a 和 b 会被异步执行,除非 a 和 b 里面有 setTimeout
    keenwon
        13
    keenwon  
       Oct 1, 2017
    1、同步函数,直接
    a()
    b()

    2、异步函数,callback,promise,async/await 都行
    webcoder
        14
    webcoder  
       Oct 2, 2017
    同步就不说了,上面的前辈们都说清楚了。

    异步的话,在回调的函数里再引用下一个函数,注意回调分成功和失败两种回调,除非两个回调函数都一样,否则两个都要作下一个函数的引用。
    PythonAnswer
        15
    PythonAnswer  
       Oct 2, 2017 via Android
    我喜欢用 promise

    按个人口味啊
    sneezry
        16
    sneezry  
       Oct 2, 2017 via iPhone
    初学者建议先研究回调,理解了回调机制后再研究 promise,最后再研究 await async
    huoyingluoye
        17
    huoyingluoye  
       Oct 2, 2017
    基本都是回调,只是区分异步和同步的问题,楼上都说的很清楚了
    About     Help     Advertise     Blog     API     FAQ     Solana     1573 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 58ms UTC 16:23 PVG 00:23 LAX 09:23 JFK 12:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86