从for循环返回但保持循环运行

时间:2013-05-15 12:57:50

标签: javascript

我有一个for循环,需要在每次迭代时返回一些内容:

for(var i=0;i<100;++i) {
    return i;
}

但是返回打破了循环。我怎么能回来但是循环运行?

4 个答案:

答案 0 :(得分:10)

将其存储在数组中。

var array = [];
for (var i = 0; i < 100; ++i) {
    array.push(i);
}

答案 1 :(得分:5)

此处的背景尚不清楚。如果你试图为循环的每次迭代执行一个函数,为什么不能像在循环中调用函数那样简单呢?

for(var i=0;i<100;++i) {
    processIteration(i)
}

processIteration中,您只需处理该值所需的内容即可。

答案 2 :(得分:2)

将需要返回的值存储在数组中,然后在循环之后返回数组。

答案 3 :(得分:0)

有3种解决方法

  1. 承诺

function loop() {
  promises = []
  for (var i = 0; i < 100; ++i) {
    // push a promise resolve to a promises array
    promises[i] = Promise.resolve(i);
  }
  return promises;
}

// Observe the promises loop
for (let p of loop()) {
  p.then(console.log)
}

  1. 回调

function loop(cb) {
  for(var i = 0; i < 100; ++i) {
    // calling the callback 
    cb(i);
  }
}

// Pass a do something method
// Here it's the console log as the callback
loop(console.log)

  1. 屈服

// Generator function for loop over 100
function* loop() {
  for (var i = 0; i < 100; ++i) {
      // return value from loop 
      yield i;
  }
}

// Initialize the generator function
let it = loop();

// Call and get the resulr
// it.next().value
var result = it.next();
while (!result.done) {
  console.log(result.value); // 1 2 3 .... 99
  result = it.next();
}