Dmi*_* S. 19 javascript node.js ecmascript-6
此代码生成错误:
function *giveNumbers() {
[1, 2, 3].forEach(function(item) {
yield item;
})
}
Run Code Online (Sandbox Code Playgroud)
这可能是因为yield在一个不是生成器的函数内部.有一种优雅的方法来克服这个问题吗?我的意思是:
function *giveNumbers() {
let list = [1, 2, 3];
for (let i = 0; i < list.length; i++) {
yield list[i];
}
}
Run Code Online (Sandbox Code Playgroud)
Ber*_*rgi 12
这可能是因为yield在一个不是生成器的函数内部.
是.您无法使用yield回调.
有一种优雅的方法来克服这个问题吗?
取决于用例.通常没有理由真正想要yield回调.
在你的情况下,你想要一个for…of循环,它几乎.forEach在所有方面都优于:
function *giveNumbers() {
for (let item of [1, 2, 3])
yield item;
}
Run Code Online (Sandbox Code Playgroud)
你可以使用yield *语法。
function *giveNumbers() {
yield * [1, 2, 3].map(function(item) {
return item;
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5585 次 |
| 最近记录: |