我想做的是让一个闭包返回相同的值n
次。
let value = getCurrentValue([0, 315, 270, 225, 180, 135, 90], 3);
然后我应该得到:
value() // returns 0
value() // returns 0
value() // returns 0
value() // returns 315
value() // returns 315
value() // returns 315
value() // returns 270
value() // returns 270
value() // returns 270
这就是我尝试过的!
function getCurrentValue(values, num) {
let index = -1;
let l = values.length;
function increment() {
++index;
if (index < l) {
return values[index]
} else {
index = -1;
++index;
return values[index]
}
}
if (num) {
for (var i = 0; i < num; i++){
return increment
}
}
return increment;
}
如有任何帮助,我们将不胜感激!
最佳答案
这是我的 generator
解决方案&关闭方案
// generator solution
function* getCurrentValueIter(iter, times) {
for (let i = 0; i < iter.length * times; i++) {
const cur = Math.floor(i / times);
yield iter[cur]
}
}
console.log('generate')
const valueIter = getCurrentValueIter([0, 1], 2)
for (let value of valueIter) {
console.log(value)
}
// you can also use valueIter manually
// console.log(valueIter.next().value)
// closure solution
function getCurrentValue(iter, times) {
let i = 0
function value() {
while (i < iter.length * times) {
const cur = Math.floor(i / times);
i += 1
return iter[cur]
}
}
return value
}
const value = getCurrentValue([0, 1], 2)
console.log('closure', value())
console.log(value())
console.log(value())
console.log(value())
关于javascript - 如何从闭包函数调用中返回相同的值 n 次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72509246/