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

2017-10-01 20:15:33 +08:00
 delikely

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

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

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

4190 次点击
所在节点    JavaScript
17 条回复
mrzhiin
2017-10-01 20:22:25 +08:00
async await
caomu
2017-10-01 20:53:39 +08:00
上面是新方法

老方法是 callback
WriteJob
2017-10-01 20:53:41 +08:00
1. 创建个全局变量 flag(标志)为 false,函数 A 执行完后,把这个标志设为 true。然后写个判断如果这个标志等于 true,函数 B 就执行,执行完再把这个标志设为 false。
2. ES6 就用 Promise 或者楼上提到的异步。
FrankFang128
2017-10-01 21:06:17 +08:00
a()
b()
liuzhiyong
2017-10-01 21:08:12 +08:00
@FrankFang128 哈哈,我也是这样想的。
isbase
2017-10-01 21:18:32 +08:00
function a(cb) {
// do something
cb()
}

function b() {}

a(b)
zhlssg
2017-10-01 21:59:40 +08:00
首先搞清楚你的函数是同步执行还是异步执行的吧
delikely
2017-10-01 22:39:32 +08:00
@zhlssg 测试发现是异步执行(所以才来问的)的,请问怎么指定函数的执行方式。有什么资料推荐吗。谢谢!
xrr2016
2017-10-01 22:44:46 +08:00
zhlssg
2017-10-01 22:51:11 +08:00
@delikely 9L
正解,最方便的是 promise,如果用了 babel 的话,可以用 async await
romennts
2017-10-01 22:58:27 +08:00
```
async.series({
flag1:function(done){
done(null,authres);
});
}
},function(error,results){
console.log(results);
})
```

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

2、异步函数,callback,promise,async/await 都行
webcoder
2017-10-02 10:19:34 +08:00
同步就不说了,上面的前辈们都说清楚了。

异步的话,在回调的函数里再引用下一个函数,注意回调分成功和失败两种回调,除非两个回调函数都一样,否则两个都要作下一个函数的引用。
PythonAnswer
2017-10-02 10:42:47 +08:00
我喜欢用 promise

按个人口味啊
sneezry
2017-10-02 12:58:26 +08:00
初学者建议先研究回调,理解了回调机制后再研究 promise,最后再研究 await async
huoyingluoye
2017-10-02 18:28:55 +08:00
基本都是回调,只是区分异步和同步的问题,楼上都说的很清楚了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/395051

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX