javascript - 生成器返回值的语义

标签 javascript typescript

我无法理解生成器中“return”的语义。我将其理解为最终值,因此也是最后值。

function* gen() {
  yield "foo";
  return "bar";
}

for (const x of gen()) {
  console.log(x);
}

这个例子只打印“foo”而不是“bar”。

编辑:

有没有办法用“for”语法获取“done=true”迭代器的返回值,还是总是丢失?

最佳答案

不,您不能从 for … of 循环中获取返回值。不过你可以试试

function* gen() {
  yield 1;
  yield 2;
  return "done";
}
function* genAndLogResult() {
  const val = yield* gen();
  console.log(val);
}

for (const x of genAndLogResult()) {
  console.log(x + 40);
}

关于javascript - 生成器返回值的语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47380067/

相关文章:

javascript - 我可以使用子字符串过滤javascript中的对象数组吗?

javascript - 调用另一个函数时如何禁用该函数?

javascript - 获取 "Current"UTC 日期和时间。独立于本地时间/计算机时间

javascript - 在 Typescript 中,为什么对象不能在赋值时指定多余的属性,但在传递给函数时可以使用相同的接口(interface)?

javascript - forEach循环分配相同的随机数

javascript - 如何在父组件中调用子组件的函数

javascript - 用正则表达式替换捕获的空格未知次数

c# - UrlEncode - Javascript 与 C#

javascript - 带有 Google Secrets Manager 的 Firebase Cloud Function 如何让异步/等待工作

javascript - 使用 window.print() 时可以更改页面布局吗?