欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > 【前端】 async 和 await 以及 generator生成器函数

【前端】 async 和 await 以及 generator生成器函数

2025/9/15 0:36:12 来源:https://blog.csdn.net/weixin_43872912/article/details/144598388  浏览:    关键词:【前端】 async 和 await 以及 generator生成器函数

一、背景

这一篇随机主要是想记录一下自己学习js中有关异步内容的东西。然后发现有人拿异步跟生成器函数进行比较了一下,因此一起学习了一下。

二、知识点相关内容及实验test

2.1 generator 生成器函数

generator函数的作用:每次访问返回函数中yield 所定义的值,然后利用 方法.next() 来访问下一个yield所定义的值。

//generator函数测试 函数带*的意思就是生成器函数
function* fibs() {let a = 0;let b = 1;while (true) {yield a;[a, b] = [b, a + b];}
}
let [first, second, third, fourth, fifth, sixth] = fibs();
console.log(first, second, third, fourth, fifth, sixth);let a = fibs().next();
let b = fibs().next();
let c = fibs().next();
let d = fibs().next();
let e = fibs().next();console.log(a,b,c,d,e);
//这里输出的都是0开始,是因为每次调用fibs()生成器方法都会生成一个新的遍历器。//如果想连续执行,可以将其赋值给一个变量。
const fib = fibs();let a1 = fib.next();
let b1 = fib.next();
let c1 = fib.next();
let d1 = fib.next();
let e1 = fib.next();console.log(a1,b1,c1,d1,e1);

这段代码的输出如下图所示:
generator程序输出图

2.2 异步 async和await

async 一般不单独使用,它里面有0个或者多个await,await不能单独使用。

这个是es7里面的内容,是基于promise构造的。

await的意思是,await后面的语句或者函数必须执行完全才能继续向下执行,异步函数(async)可以先不用执行完,下面的代码也可以执行。

function one() {console.log(performance.now());return 'I am one'
}
//这里设置了异步,setTimeout函数前面加了await说明这个函数必须执行完才能往下走async function two() {await setTimeout(()=>{},1000)console.log(performance.now());return 'I am two';
}function three() {console.log(performance.now());return 'I am three'
}function run() {console.log(one());console.log(two());console.log(three());
}
run()

程序输出如下图所示:
异步代码的输出以及解释
promise里面pending表示正在执行,fulfilled表示执行结束,rejected表示失败了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com