JavaScript 中的 await 和 yield 关键字有什么区别?
在本文中,我们将了解 Await 关键字与 Yield 关键字的不同之处。
生成器函数:可以根据用户需求以不同的时间间隔返回多个值,并且可以管理其内部状态的函数是生成器函数。如果一个函数使用函数 *语法,它就会成为一个 Generator函数。它们与普通函数不同,因为普通函数在一次运行中完成,而我们可以暂停和恢复生成器函数。
笔记: 执行生成器函数时,它会返回一个新的生成器对象。
功能: yield 和 await 都可以用来编写“等待”的异步代码,这意味着看起来好像是同步的代码,即使它实际上是异步的。
await:这是一个用于等待 Promise 的运算符。在我们的常规 JavaScript 代码中,我们在 async函数中使用它,它可以单独与 JavaScript 模块一起使用。
当我们在表达式中使用 await 关键字时,异步函数的执行将暂停,直到 promise 完成(即完成或拒绝),并在完成后恢复异步函数的执行。恢复时,await 表达式的值是已实现的 Promise 的值。
句法:
var result = await expression;
表达式:一个 Promise 或任何要等待的值。
result:包含promise的值(解析值)。
例子:
Javascript
Javascript
(注意:在 node.js 中运行上面的代码)
输出:
yield: yield 关键字用于暂停和恢复生成器函数。
关键字yield用于暂停生成器函数的执行,表达式的最终值将是yield关键字后面的值返回给生成器的调用者。
它导致对生成器的next()方法的调用返回具有两个属性的 IteratorResult 对象:
- value:是yield关键字返回的值。
- 完成:它是布尔类型。 (如果 done 为 false,则表示生成器函数尚未完全完成)。
使用它,我们可以创建一个遍历数据的迭代器。
句法:
var result = yield expression;
表达式:从生成器函数返回的值。
结果:检索传递给生成器的 next() 方法以恢复其执行的可选值。
例子:
Javascript