function serialAnim () {
// ...A的处理内容
setTimeout(() => {
// ...B的处理内容
}, 3000)
//c的处理内容
}
当我们遇到这样的处理时候因为JS的一部执行机制,会先执行A,然后执行C,过了三秒之后执行B。
对于那些不知道什么是异步的人,让我们用具体的代码进行试验。将以下代码另存为 async.js
let msg = ''
// #1
console.log('#1')
msg = msg + 'Hello '
// #2
setTimeout(() => { // 5秒之后的处理
console.log('#2')
msg = msg + "I'm "
}, 500)
// #3
console.log('#3')
msg = msg + 'Jeccy'
// #4
console.log('#4')
console.log(msg)
当我们执行上面的代码的时候会输出如下的结果
$ node async.js
#1
#3
#4
Hello Jeccy
#2
如果是非异步语言,进程会在setTimeout()停止5秒,字符串会按照脚本中写的顺序输出。但是在异步语言JavaScript中,进程不会停止。在执行#1之后,#3会被立即执行。
解决办法
我们无法对每个过程进行排序是一个很头疼的问题。因此,我们可以用Promise轻松处理这种困难的异步处理。
直接来看一下代码吧!