1.通过callback 处理异步函数
下面代码是一个简单的异步函数
function fun(){
setTimeout(()=>{
return 5
},2000)
}
console.log(fun())//undefined
由于js 的异步执行,输出结果为undefined,在console.log 执行的时候,return 还未执行,对代码进行下面的修改,就可以拿到这个返回值。
function fun(callback){
setTimeout(()=>{
callback(5)
},2000)
}
fun((data)=>{
console.log(data);
})
给函数 fun 传递一个参数,这个参数也是一个函数,两秒后调用 callback,就可以成功拿到 5。
2.利用 promise 处理异步
function fun(){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(5)
},2000)
})
}
fun().then((data)=>{
console.log(data);
})
resolve 是 promise 中的成功的回调,函数 fun 必须返回一个 promise 对象。
3.利用 async、await 处理异步
function fun(){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(5)
},2000)
})
}
async function test(){
var data = await fun();
console.log(data);
}
test();
async 写在函数前面,就表示该函数是一个异步函数;
await 写在异步函数内部,后面必须跟一个promise 对象,await 会将promise中,成功的回调的值传给前面的变量。