<!--
JS运行机制的顺序
1.同步
2.process.nextTick
3.微任务(promise.then)
4.红任务(计时器,ajax,读取文件)
5.setImmediate
这是一次事件循环,如果还有任务队列里还有事件,会在setImmediata之后执行
运行栈会执行同步代码,异步代码会在任务队列中执行,事件循环机制会不断检测任务队列中的事件,
存在事件即会执行,settimeout的延迟是延迟后将事件存放到任务队列中。
-->
async function fun() {
return 1
}
//async函数的返回值是一个promise对象,所以可以调用。then方法,data为async函数的返回值
function fun() {
return new Promise((resolve) => {
resolve(2)
})
}
//这两种写法的结果是一样的。
fun().then((data) => {
console.log(data)
})
let p1 = new Promise((resolve => { resolve(3) }))
let p2 = new Promise((resolve => { resolve(4) }))
async function Fun() {
let a = await p1 //可以通过await调用promise对象
let b = await p2
console.log(a)
console.log(b)
return 99
}
Fun().then((data) => {
console.log(data)
})
async function fun1() {
console.log(300)
let data = await fun2()
console.log(data)
}
async function fun2() {
console.log(200)
return 100
}
fun1()