1

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

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

但 return 打破了循环。我怎样才能返回但保持循环运行?

4

4 回答 4

12

将其存储在数组中。

var array = [];
for (var i = 0; i < 100; ++i) {
    array.push(i);
}
于 2013-05-15T12:59:32.987 回答
5

这里的上下文不清楚。如果您尝试为循环的每次迭代执行一个函数,为什么不做一些简单的事情,比如从循环中调用一个函数呢?

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

processIteration您可以简单地处理您需要使用该值发生的事情。

于 2013-05-15T13:00:09.767 回答
2

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

于 2013-05-15T12:59:23.097 回答
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();
}

于 2018-08-15T05:42:27.503 回答