js中的同步函数,异步函数及其具体应⽤
1.同步函数:当⼀个函数同步调⽤时,该函数不会被调⽤时不会⽴即返回,直到该函数所要做的事情全部做完了才返回
2.异步函数:当⼀个异步函数被调⽤时,该函数会⽴即返回,尽管这个函数规定的操作任务还没有完成
javascript是异步编程的,这是js的⼀个优点,但是也是它的⼀个缺点,因为当我们想要使⽤函数执⾏完成的结果来进⾏下⼀步操作时,会有⼀些⿇烦,解决这种问题的⽅法是回调,因为回调的代码的层次很深不便于维护,所以有了promise,但是promise也有⼀些缺点,所以我们有async和await,但是⼆者都有其各⾃的优点,所以通常我们是⼆者结合起来使⽤的。
在js中我们可以使⽤async函数表达式来定义⼀个异步函数,在异步函数中我们可以使⽤await放在promise之前,将会暂停执⾏这个函数,直到promise执⾏或者是拒绝
并⾏执⾏⼀个异步函数
function pause(){
return new Promise((res)=>setTimeout(res,500));
}
const promise1 = pause();
const promise2 = pause();
Promise.all([promise1,promise2]).then(()=>{console.log('i will be logged after 500ms')})
但是如果我们写成这样的话,因为await要等到第⼀个完成之后再开始执⾏,所以需要1000ms之后才会打印出内容
async function waitForMoment(){
await和async使用方法await pause();
await pause();
console.log('i will be logged after 1000ms');
}
为了解决这个问题,我们必须调整位置
async function inParalell(){
const await1 = pause();
const await2 = pause();
await await1;
await await2;
console.log('i will be logged after 500ms');
}
⽽在func当中,我们常使⽤的是async表达式创建的⼀个异步函数,就像这样
export async function listAll(param){
return request(createTheURL(Config.API.APPLICATION,'list'),{
method: 'GET',
body:param,
})
}
其中的request函数会返回⼀个promise
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论