📜  JavaScript 中的 await 和 yield 关键字有什么区别?

📅  最后修改于: 2022-05-13 01:56:47.727000             🧑  作者: Mango

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


(注意:在 node.js 中运行上面的代码)

输出: