推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide
delikely

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

  •  
  •   delikely · Oct 1, 2017 · 5452 views
    This topic created in 3319 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
    mrzhiin
    Oct 1, 2017
    1
    async await
    caomu
    caomu
    Oct 1, 2017 via Android
    2
    上面是新方法

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

    function b() {}

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

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

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

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

    按个人口味啊
    sneezry
    sneezry
    Oct 2, 2017 via iPhone
    16
    初学者建议先研究回调,理解了回调机制后再研究 promise,最后再研究 await async
    huoyingluoye
    huoyingluoye
    Oct 2, 2017
    17
    基本都是回调,只是区分异步和同步的问题,楼上都说的很清楚了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5799 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 02:36 · PVG 10:36 · LAX 18:36 · JFK 21:36
    ♥ Do have faith in what you're doing.